什么';c类和c类的区别是什么? 我想知道C++中的类(const class和c)构造函数和类(class和c)< /Cl>构造函数之间的区别。 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; } };

什么';c类和c类的区别是什么? 我想知道C++中的类(const class和c)构造函数和类(class和c)< /Cl>构造函数之间的区别。 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; } };,c++,copy,copy-constructor,C++,Copy,Copy Constructor,现在,我想知道何时调用类(Class&c)构造函数。两者都是复制构造函数 如果类X的非模板构造函数的第一个参数类型为X&、const X&、volatile X&或const volatile X&,并且没有其他参数,或者所有其他参数都有默认参数([dcl.fct.default]),则该类的非模板构造函数是复制构造函数。 [示例:X​::​X(常数X&)和X​::​X(X&,int=1)是复制构造函数 我知道Class(const Class&c)是一个复制构造函数。创建新的类对象时将调用它

现在,我想知道何时调用
类(Class&c)
构造函数。

两者都是复制构造函数

如果类
X
的非模板构造函数的第一个参数类型为
X&
const X&
volatile X&
const volatile X&
,并且没有其他参数,或者所有其他参数都有默认参数([dcl.fct.default]),则该类的非模板构造函数是复制构造函数。 [示例:
X​::​X(常数X&)
X​::​X(X&,int=1)
是复制构造函数

我知道
Class(const Class&c)
是一个复制构造函数。创建新的类对象时将调用它。例如:

Class c;  // output->running Class()...
Class cc(c); // output->runing Class(const Class& c)...
Class c;  // output->running Class()...
Class cc(c); // output->runing Class(const Class& c)...
不,你的密码


这就是:非
const
复制构造函数是为非
const
参数调用的。这就是它的全部内容。

我知道
Class(const Class&c)
是一个复制构造函数。
Class(Class&c)
是一个复制构造函数。通常首选const引用变量(例如,由于复制的对象通常不需要修改,且非常量引用不能绑定常量对象或右值)。为了记录在案,我没有投票将此问题作为重复问题来结束,这与文章顶部的注释所声称的相反,我不认为它是重复问题(虽然这可能足以帮助澄清OP的误解)。如果您希望在复制时更改被复制的对象(例如,
是否已被复制=true;
),则您希望使用不带
常量的对象
running Class()...
running Class(Class& c)...