其他分享
首页 > 其他分享> > C Assignment构造函数

C Assignment构造函数

作者:互联网

如果我有两个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