C++ Primer plus第五版
第十章
C++中,程序在声明对象时将自动调用构造函数。
构造函数
构造函数初始化对象的两种方式:
第一种:
第二种:
C++同Java一样,如果没有提供构造函数,那么会存在一个没有任何参数的默认构造函数
析构函数
析构函数完成对象的清理工作,在对象过期时会自动调用,例如,如果构造函数使用new来分配内存,则析构函数将使用delete来释放这些内存。
函数原型:
C++ Primer plus 第五版
第十二章
复制构造函数
这儿的sports是个已经初始化的StringBad对象
何时调用复制构造函数
每当程序生成了对象副本时,编译器都将使用复制构造函数。具体来说,当函数按值传递对象或者一个函数返回对象时,都将使用复制构造函数,按值传递意味着创建原始变量的一个副本,编译器生成临时对象时(比如将三个Vector对象相加时,编译器可能生成临时的Vector对象来保存中间结果)也将使用复制构造函数,何时生成临时对象随编译器而异,单无论哪种编译器,单按值传递和返回对象时,都将调用复制构造函数。
复制构造函数执行流程:
当ditto对象析构函数被调用时,将释放str指向的内存,这时候如果再用motto对象去访问str将发生错误。解决这个问题的办法是使用显式复制构造函数。