拷贝构造函数
用一个已存在的对象创建新的对象,不会调用(普通)构造函数,而是调用拷贝构造函数。
如果类中没有定义拷贝构造函数,编译器将提供一个拷贝构造函数,它的功能是把已存在对象的成员变量赋值给新对象的成员变量。
用一个已存在的对象创建新的对象语法:
类名 新对象名(已存在的对象名);
类名 新对象名=已存在的对象名;
拷贝构造函数的语法:
类名(const 类名& 对象名)
注意:
l 访问权限必须是public。
l 函数名必须与类名相同。
l 没有返回值,不写void。
l 如果类中定义了拷贝构造函数,编译器将不提供默认的拷贝构造函数。
l 以值传递的方式调用函数时,如果实参为对象,会调用拷贝构造函数。
l 函数以值的方式返回对象时,可能会调用拷贝构造函数(VS会调用,Linux不会,g++编译器做了优化)。
l 拷贝构造函数可以重载,可以有默认参数。
类名(......,const 类名& 对象名,......)
l 如果类中重载了拷贝构造函数却没有定义默认的拷贝构造函数,编译器也会提供默认的拷贝构造函数。
标签:调用,对象,编译器,拷贝,类名,构造函数 From: https://www.cnblogs.com/tgfoven/p/17113801.html