拷贝构造函数 转型构造函数

  拷贝构造函数创建一个新的对象,此对象是另一个对象的拷贝品。
要注意两点:
第一,拷贝构造函数的原型是引用,如
Person(Person &);
Person(const Person &);
第二,拷贝构造函数可以有多于一个的参数,但第一个以后的所有参数都必须有默认值
Person(const Person & p,bool married = false);(第一个参数可以无默认值)
如果类的设计者不提供拷贝构造函数,编译器会自动生成一个。

通常,如果一个类包含指向动态存储空间的数据成员,则就应为这个类设计拷贝构造函数。
如果想新对象和原对象指向不同的存储空间,就必须自己新设计拷贝构造函数。这样修改新对象的数据成员就不会改变原有对象的数据成员。
所以,拷贝构造函数的特点就是函数名必须和类名一致,它惟一的一个参数是本类的一个引用变量。
*********************************************************a beautiful cutline***
转型构造函数,隐型类型转换,使用了一个隐藏的方式将string转换为person
Person(string s)
class Person {
      public:
            explicit Person(const string &n) {name = n;}//使用explicit禁止了转型构造函数
}















































































































































































































































































































































































































































































































































































































































































































原文地址:https://www.cnblogs.com/xiexie/p/1579646.html