1 / 26
文档名称:

六章数据抽象-类-资料.ppt

格式:ppt   大小:680KB   页数:26页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

六章数据抽象-类-资料.ppt

上传人:小落意心冢 2022/5/19 文件大小:680 KB

下载得到文件列表

六章数据抽象-类-资料.ppt

文档介绍

文档介绍:六章数据抽象-类-资料
重要内容
2
栈-过程式
#include <iostream>
using namespace std;
//定义栈数据类型
#define STACK_SIZE 100
struct ap_year();
void print();
private:
int year,month,day;
};
void Date::set(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
bool Date::is_leap_year()
{
return (year%4 == 0 && year%100 != 0) || (year%400==0);
}
void Date::print()
{
cout<<year<<"."<<month<<"."<<day<<endl;
}
8
TPoint类
class TPoint
{
public:
void SetPoint(int x, int y);
int Xcoord()  { return X ; }
int Ycoord() { return Y ;}
void Move(int xOffset, int yOffset) ;
private:
int X, Y;
};
void TPoint::SetPoint(int x, int y)
{
X=x ;
Y=y ;
}
void Tpoint::Move(int xOffset, int yOffset)
{
X+=xOffset;
Y+=yOffset;
}
9
this指针
void func(A *p)
{ ......
}
class A
{
public:
int x;
void f() { func(?); }
void q(int i) { x = i; f(); }
};
A a,b;
如果要求:
()时,在A::f中调用func(&a);
()时,在A::f中调用func(&b);
那么,A::f中调用函数func的参数应该如何写呢?
15
构造函数调用
class A
{ ......
public:
A();
A(int i);
A(char *p);
};
A a1; //调用默认构造函数。也可写成:A a1=A(); 但不能写成:A a1();
A a2(1); //调A(int i),也可写成:A a2=A(1); 或 A a2=1;
A a3(“abcd”); //调A(char *),也可写成:A a3=A(“abcd”); 或 A a3=“abcd”;
A a[4]; //调用a[0]、a[1]、a[2]、a[3]的A()
A b[5]={A(),A(1),A("abcd"),2,"xyz"}; //调用b[0]的A()、b[1]的A(int)、//b[2]的A(char *)、 //b[3]的A(int)和b[4]的A(char *)。
A *p1=new A; //调用默认构造函数。
A *p2=new A(2); //调A(int i)。
A *p3=new A("xyz"); //调A(char *)。
A *p4 =new A[20]; //创建动态对象数组时只能调用各对象的默认构造函数。
16
常成员,引用成员和初始化列表
class A
{
int x;
const int y;
int &z=y; //Error,这里是说明,而不是定义。
public:
A()
{
x = 0; //OK
y = 1; //Error,y是常量成员,其值不能改变。
}
};
class A
{
int x;
const int y;
int& z;
public:
A(): y(1),z(x) //成员初始化表
{
x = 0;
}
};
17
析构函数
class A
{ int x;
public:
A();
~A(); //析构函数
......
};
18
字符串类的定义(1)
#include <cstring>
#include <cstdli