The*_*ton 2 c++ initialization variable-assignment
我想在声明中为类分配一个值,所以我创建了这个基本类:
class A
{
public:
A &operator=(int)
{
return (*this);
}
};
Run Code Online (Sandbox Code Playgroud)
并用这个main编译它:
int main(void)
{
A x = 1;
}
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨此错误消息:
no viable conversion from 'int' to 'A'
A x = 1;
^ ~
Run Code Online (Sandbox Code Playgroud)
但是当我用这个main编译时:
int main(void)
{
A x;
x = 1;
}
Run Code Online (Sandbox Code Playgroud)
一切顺利编译
为什么我的第一个主要不编译,如何更改类A以便编译?
A x = 1;是初始化,而不是赋值; 他们是不同的东西.它不会调用赋值运算符,但需要转换构造函数.
class A
{
public:
// converting constructor
A (int) {}
A &operator=(int)
{
return (*this);
}
};
Run Code Online (Sandbox Code Playgroud)
然后
A x = 1; // initialize x via converting constructor
x = 2; // assign x via assignment operator
Run Code Online (Sandbox Code Playgroud)