对象、构造函数、析构函数
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];
由于对象在内存中占有一定的空间,所以一定会有申请内存和释放内存的过程
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];
相关文章推荐
- 类与对象(构造函数,析构函数,静态数据成员)。。。2014.5.19
- 临时对象构造函数和析构函数的执行时机
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- C++面向对象复习(三)——构造函数与析构函数的调用顺序
- C++ 学习总结(十)——C++类与对象,及构造函数,析构函数,拷贝构造函数
- C++初学初练类与对象构造函数与析构函数之人员信息录入简单代码
- 关于创建对象时调用构造函数和析构函数的若干问题
- 将构造函数,析构函数声明为私有和保护的,那么对象如何创建?
- 对象初始化以及在构造函数和析构函数中调用virtual函数的问题
- php基础知识:类与对象(3) 构造函数和析构函数
- C++学习笔记(六)-- 类和对象 构造函数和析构函数 const成员函数 this指针 对象数组 堆栈管理变量
- php部分---面向对象:定义、实例化、构造函数、析构函数;
- 关于基类指针指向子类对象,构造函数和析构函数调用的顺序的问题。
- 【php手册:类与对象】构造函数和析构函数
- c++类临时对象、复制构造函数、析构函数 VS2017 与gcc 编译器对比
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- 九、构造函数和析构函数(三) 初始化列表、对象成员初始化、const,引用成员初始化
- 创建对象中构造函数和析构函数
- C++ 构造函数、默认构造函数、析构函数和对象初始化
- 计算机程序设计(C++)第10周编程作业数据的抽象和封装——类(2)——构造函数、析构函数和指向对象的指针