类&对象
类的创建和对象定义
与C语言的结构体相似
class class_xxx //类的创建
{
public: //访问标识符,有:private/public/protected 三种
//不写就默认是public
int value; //可以在里面添加变量,但并不是定义,只是声明
void funtion(int para); //也可以在里面添加成员函数
//但这里并不是定义函数,只是告诉别人你这个类里面有一个这个函数
};
class_xxx Line //这里定义了一个对象
类名 对象名
void Line::funtion(int para) //这里才是定义了类里面的成员函数
{
value = para;
}
类的构造函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行(创建类的时候不会执行,创建指针对象的时候也不会执行,只有创建实例对象的时候才会执行)
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。
class class_xxx
{
public: //访问标识符,有:private/public/protected 三种
//不写就默认是public
int value; //可以在里面添加变量,但并不是定义,只是声明
void funtion(int para); //也可以在里面添加成员函数
//但这里并不是定义函数,只是告诉别人你这个类里面有一个这个函数
class_xxx(); //这是构造函数
};
class_xxx::class_xxx(void) //构造函数的定义
{
//构造函数可用于为某些成员变量设置初始值。
value = 10;
cout << "value = " << value << endl;
}
需要注意的地方:在列表初始化的时候,初始化的顺序必须和上面类当中成员变量的顺序一致。
例如:
class class_xxx()
{
int a; //第一个 //初始化列表的顺序就是和这里的顺序相对应
int b; //第二个
void funtion();
class_xxx();
}
class_xxx::class_xxx():x(a),y(b)
{
//可见,初始化列表的第一个是a,第二个才是b,不能调换,不然其中一个就会初始化失败
}
类的析构函数
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
class class_xxx
{
public: //访问标识符,有:private/public/protected 三种
//不写就默认是public
int value; //可以在里面添加变量,但并不是定义,只是声明
void funtion(int para); //也可以在里面添加成员函数
//但这里并不是定义函数,只是告诉别人你这个类里面有一个这个函数
class_xxx(); //这是构造函数
~class_xxx() //这是析构函数
};
补充:
this指针
每一个对象都能通过this指针来访问自己的地址,但不能用来访问友元函数,因为友元函数不属于成员函数。