1、初始化对象时:
hz::string_pro s1="hi";
hz::string_pro s2("hello");
均调用同一构造函数,两种操作等价。
2、拷贝该构造函数
hz::string_pro s2(s1);
编译器会默认生成一个拷贝构造函数,但是通常会造成编译问题,因为其拷贝方式是逐位拷贝,只包含成员变量,不包含堆上内存数据。如果成员变量指向同一段内存,而析构时会出现两次析构,针对同一段内存进行delete操作。
3、什么时候需要拷贝构造函数:
(1)需要用一个对象对新建对象进行初始化时
(2)函数中使用对象传值作为形参输入
(3)函数将对象传值作为返回值
4、编译器生成的赋值运算符:逐位拷贝
hz::string_pro s2;
s2=s1;
5、拷贝构造函数与赋值运算符是成对出现的