1. 调用自定义构造函数测试

1)调用语句形式;

类中定义了拷贝构造函数,使用下列两种形式均调用拷贝构造函数;

String s4(s2);   

String s2 = s1;  

2)深拷贝原理测试:普通变量拷贝、指针变量拷贝;

 String s5; //调用构造函数String(); 整型变量 s5.len 已经被分配了内存空间;而s5.Str指针所指向的空间为NULL,故描述其没有分配内存空间;
 s5 = s2; //结构式拷贝,不调用拷贝构造函数;只是将对象s2的值去覆盖对象s5的值,s5.len 和 s5.Str被覆盖;

 

2. 调用默认拷贝构造函数的测试(思考:什么情况下调用的是默认拷贝构造函数?)

1)调用语句形式

 String s2 = s1;  // 类中未定义任何拷贝构造函数,则该语句执行时,系统会调用默认拷贝构造函数;

2)调用原理

  把初始值对象的每个数据成员的值依次赋值到新建立的对象中。

 

3. 什么是结构式的拷贝?

 结构变量间的赋值称为结构式拷贝。属于浅拷贝。

 

4. 对象赋值语句的调用形式? 

 在对象进行赋值时,拷贝构造函数不被调用。此时进行的是结构式的拷贝。