我想知道C ++中Class(const Class & c)
构造函数和Class(Class & c)
构造函数之间的区别。
class Class
{
public:
Class()
{
cout << "running Class()..." << endl;
}
Class(Class& c)
{
cout << "running Class(Class& c)..." << endl;
}
Class(const Class& c)
{
cout << "runing Class(const Class& c)..." << endl;
}
};
Class
的定义如上所述。
我知道Class(const Class& c)
是一个复制构造函数。创建新的Class对象时将调用它。例如:
Class c; // output->running Class()...
Class cc(c); // output->runing Class(const Class& c)...
现在,我想知道何时调用Class(Class& c)
构造函数。
答案 0 :(得分:2)
都是复制构造函数。
如果类
X
的非模板构造函数的第一个参数的类型为X&
,const X&
,volatile X&
或const volatile X&
,则为副本构造函数,并且没有其他参数,或者所有其他参数都具有默认参数([dcl.fct.default])。 [示例:X::X(const X&)
和X::X(X&,int=1)
是副本构造函数。
答案 1 :(得分:1)
我知道
Class(const Class& c)
是一个复制构造函数。创建新的Class对象时将调用它。例如:Class c; // output->running Class()... Class cc(c); // output->runing Class(const Class& c)...
不。您的代码actually outputs
running Class()...
running Class(Class& c)...
就可以了:非const
参数调用了非{const
复制构造函数。这就是全部。