写点什么

[C++ 总结记录] 构造函数与析构函数注意点

用户头像
图解AI
关注
发布于: 2021 年 03 月 24 日
[C++总结记录]构造函数与析构函数注意点

1.构造函数

1) 构造函数的作用

>创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用


2) 构造函数的语法

>a.没有返回值也不写 void


>b.函数名称与类名相同


>c.构造函数可以有参数,因此可以发生重载


>d.程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次


3)构造函数分类

a.无参构造


b. 有参构造


>c. 拷贝构造


class Student {public:	Student();// 无参构造	Student(int age); //有参构造函数	Student(Student &stu);// 拷贝构造	~Student();	void show();private:	int m_age;};// 有参构造函数Student::Student(int age) {	this->m_age = age; 	cout << "有参构造" << endl;}// 无参构造函数Student::Student() {	this->m_age = 1000;	cout << "无参构造" << endl;}// 有参构造函数Student::Student(Student &stu) {	this->m_age = stu.m_age;	cout << "拷贝构造函数" << endl;}Student::~Student() {	cout << "析构函数" << endl;}void Student::show() {	cout <<this->m_age << endl;}int main() {	Student stu1;//调用无参构造	Student stu2(15);// 有参构造函数	Student stu3(stu2);// 拷贝构造	return 0;}
复制代码


3)构造函数调用方法

>a.括号法


>b. 显示法


>c. 隐式转换法


//注意1:调用无参构造函数不能加括号,如果加了编译器认为这是一个函数声明 //Student stu0();//调用无参构造错误 Student stu1(100);// 括号法 Student stu2 = Student(200);//显式法 Student stu3 = 100;//隐式转换法等价于:Student stu3 = Studnet(100) Student stu4 = stu3;//Student stu4 = Student(stu3); //注意:不能利用 拷贝构造函数 初始化匿名对象 编译器认为是对象声明 //Student stu5(stu3);//错误
复制代码


2。析构函数

~类名(){}

>a. 没有返回值也不写 void


>b. 函数名称与类名相同,在名称前加上符号 ~


>c. 析构函数不可以有参数,因此不可以发生重载


>d. 程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次


class Person{public:	//构造函数	Person()	{		cout << "Person的构造函数调用" << endl;	}	//析构函数	~Person()	{		cout << "Person的析构函数调用" << endl;	}
};
复制代码


用户头像

图解AI

关注

技术成就未来 2021.03.22 加入

致力于:机器学习、深度学习、数据分析、算法、架构、C/C++、Rust、HTML5/webApp、Go、Python、Lua...

评论

发布
暂无评论
[C++总结记录]构造函数与析构函数注意点