good1调用默认的构造函数

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

good3调用拷贝构造函数

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

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

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

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

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

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

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

类对象的生存周期:

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

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

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

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

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

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

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

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

临时量出了语句才结束,

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

explicit 禁止隐士生成对象,

成员方法const的意义

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

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

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

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

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
































相关文章:

  • 2021-10-12
  • 2021-09-13
  • 2021-11-01
  • 2022-01-28
  • 2022-12-23
  • 2021-12-22
猜你喜欢
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案