什么';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)...