一、类的声明
1.类的数据成员可以是任何数据类型,但不能用自动(auto)、寄存器(register)或外部(extern)进行说明。
二、成员函数的定义
1.在类外定义成员函数,成员函数的声明再类内,参数表内可以不说明参数的名字,而只说明它们的类型。
2.第二中定义方式,将成员函数定义再类的内部,此为隐式定义,隐含的将其看作内联函数
3.使用inline,显式定义,再函数最前面加inline;
三、对象的定义及使用
1.声明一个类便声明了一种类型,它并不接收和储存具体的值,只作为生成具体对象的一种“样板”,定义了对象后,系统才为对象分配储存空间,以存放对象中的成员
四、构造函数
1.类是一种抽象的数据类型,它不占储存空间,不能容那具体数据、因此再类声明中不能给数据成员赋初值
class Complex{
double real=0;//错误
};
2.构造函数:为对象分配空间,进行初始化。可以右任意类型的参数,但不能具有返回值类型
3.Complex *pa=new Complex(1.1,2.2);
使用new运算符动态建立对象,此时编译系统开辟了一段空间,空间中存放了一个Complex对象,这个是一个无名对象,但该对象有个地址,通过指针访问,例:pa->fun();
用成员函数初始化列表对数据进行初始化
1.Complex::Complex(double r,double i):real(r),image(i)
{//构造函数体}
comst修饰的数据成员,或者引用类型的数据成员,不允许赋值语句直接赋值,只能用成员初始化列表对其进行初始化
数据成员式按照它们在类中的声明顺序进行初始化,与在成员初始化列表中列出的顺序无关。
带默认参数的构造函数
1.若构造函数早类外定义,那么默认参数应该在类内声明构造函数原型时指定,不能再类外构造时指定,
2.如果构造函数的全部参数都指定了默认值,因为一个类只能有一个默认的构造函数,则不能再声明无参数的构造函数,也不能重载构造函数
五、析构函数
1.析构函数与类名相同,但前边加~,
2.析构函数不返回任何值,即不能说明函数类型
3.析构函数没有参数,因此析构函数不能被重载
4.撤销对象时,系统会自动调用析构函数
5.析构函数释放分配给对象的内存空间
析构函数调用
1.主函数结束,对象被撤销,析构函数被调用
2.如果一个对象被定义在一个函数体内,该函数被调用结束,对象释放,析构函数被自动调用
3.对象时new运算符动态创建,使用delete运算符释放时,自动调用析构函数