输出
构造函数
的 20
当我添加一个拷贝构造函数时,它会给出错误" 从'Foo'类型的右值&#强制初始化'Foo&'类型的非const引用34;
#include <iostream>
using namespace std;
class Foo
{
int a;
public:
Foo(int a)
{
this->a =a;
cout<<"Constructor called\n";
}
void operator=(Foo f)
{
this->a = a;
cout<< "Assignment operator called";
}
void show()
{
cout<<this->a<<endl;
}
};
int main()
{
// your code goes here
Foo F1 = static_cast<Foo>(20);
F1.show();
return 0;
}
答案 0 :(得分:1)
您发布的代码中没有任何分配。这样:
Foo F1 = static_cast<Foo>(20);
是复制构造的替代语法,是初始化,而不是赋值。
复制构造函数的问题可能是由于您将其定义为
Foo( Foo & f );
阻止它绑定到临时值。它应该是:
Foo( const Foo & f );