为什么引用一个构造函数会出错?

class A
{
public:
A()=default;
A & operator=(A &b)
{
return *this;
}
};
int main()
{
A a;
A b;
a=A();
return 0;
}

出错信息

全部评论
a=A()有问题吧
点赞 回复 分享
发布于 2017-01-15 18:52
如果把A()=default;屏蔽掉,和加上是一样的吧,都是调用默认构造函数,这样可以通过,可大神解答
点赞 回复 分享
发布于 2017-01-15 19:29
提供一种可能性,在a=A()中,合成的默认构造函数可能返回的是const,然后再将这个变量通过赋值运算符给a的时候,就等于把非常引用绑定到常量对象上了,所以会出错 其实啊,讲道理,a = A()这句话就不应该出现,这个默认构造函数是给我们初始化用的,一般不要拿来赋值,你可以这么写啊A c = A();
点赞 回复 分享
发布于 2017-01-16 09:23
我认为这么写应该没有问题呀…🤔🤔
点赞 回复 分享
发布于 2017-01-28 11:19
因为A()构造函数返回的是临时变量,而operator=输入参数是左值引用,不能把右值赋给左值引用。。 改成operator=(const A&)就可以了 
点赞 回复 分享
发布于 2017-01-28 12:27

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务