您的位置:首页 > 其它

对象、构造函数、析构函数

2017-11-05 17:20 134 查看
1.对象:类的具体化
由于对象在内存中占有一定的空间,所以一定会有申请内存和释放内存的过程

2.构造函数:对象在申请内存时调用的函数    Student::Student()   //在外定义
需要在类中声明
定义在内(.h )在外(.cpp)都可以
没有返回值
函数名必须和类名一致
可以有参数列表

3.析构函数:对象在释放内存时调用的函     Student::~Student()   //在外定义
参数列表为空,不能带有参数

4.构造函数的列表初始化:可以提高程序的运行效率
列表初始化方式只支持将参数通过赋值运算赋值给类成员
列表初始化的顺序必须和类成员声明的顺序一致

class Student()

{
Student(const char* name, double score, int age);
char name[20];
int score;
int age;

}

Student::Student(const char* name, double score, int age)
:score(score),age(age)               //name不是通过赋值来初始化的,所以name不能通过初始化列表来初始化

{    //列表初始化的顺序必须和类成员声明的顺序一致
strncpy(this->name,name,20);

}

5.构造函数的隐式调用

假如构造函数如下:

Student::Student(const char* name);

隐式调用:Student  stu = "Tom";

如果想要禁用这种情况的话应该在构造函数之前加explicit

6.new的使用方法

创建对象:
类名* 变量名 = new 构造函数(参数列表);
Student *pStu = new Student();

创建对象数组:
类名* 变量名 = new 类名[数组的大小];   //此时会调用多次构造函数
Student *pStu = new Student[5];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐