C++——面向对象(三)——各种对象的生存周期

来源:互联网 发布:做个文明中国人 知乎 编辑:程序博客网 时间:2024/05/22 03:24

good1调用默认的构造函数

good2调用带有三个参数的构造函数

good3调用拷贝构造函数

good1 = good3,good1调用赋值运算函数

good4调用带有3个参数的构造函数

析构顺序是5,4,3,2,1

2,3之间先调用带有三个参数的构造函数,构造临时对象,

调用赋值运算符重载函数用产生的临时对象给已经存在的good1对象赋值,最后临时对象析构

类对象的生存周期:

3,4之间,先调用带有float类型参数的构造函数,构造临时对象,再调用赋值运算符重载函数用产生的临时对象给good1赋值,最后析构临时变量

4,5之间,先调用带有float类型参数的构造函数,构造临时变量,再调用赋值运算符重载函数用产生的临时变量给good1赋值,最后析构临时变量。

5,6之间,用指针p指向临时对象,p先调用带有三个参数的构造函数,构造临时变量,然后析构临时变量,

q在出了main函数右括号才析构

因为临时对象的周期  提升成为 引用变量的生存周期,引用变量什么时候结束,临时变量就什么时候结束

临时量出了语句才结束,


explicit 禁止隐士生成对象,

成员方法const的意义

1.保护实参不被修改,不能去掉

2.为了引用隐式生成的临时量

如果去掉const,内置类型产生的临时量都是常量(临时量放在寄存器中),不能被修改,

自定义类型产生的临时量都是变量(放在内存中),可以被修改,

隐式产生的临时量都是常对象,89.5-》const CGood(89.5),常对象一定要用常引用来引用,
































原创粉丝点击