标签:c assignment-operator copy-constructor
如果我有两个A和B类,我做A = B,调用赋值构造函数? A级或B级的那个?
解决方法:
有复制构造函数和赋值运算符.由于A!= B,将调用复制赋值运算符.
简答:operator =来自A类,因为你要分配给A类.
答案很长:
A = B不起作用,因为A和B是类类型.
你可能意味着:
A a;
B b;
a = b;
在这种情况下,将调用operator = for class A.
class A
{
/*...*/
A& operator = (const B& b);
};
将针对以下情况调用转换构造函数:
B b;
A a(b);
//or
B b;
A a = b; //note that conversion constructor will be called here
其中A定义为:
class A
{
/*...*/
A(const B& b); //conversion constructor
};
请注意,这会在B和A之间引入隐式转换.如果您不希望这样,则可以将转换构造函数声明为显式.
标签:c,assignment-operator,copy-constructor 来源: https://codeday.me/bug/20190826/1731584.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。