【发布时间】:2018-10-06 22:15:56
【问题描述】:
我想知道是否有办法让 = 运算符在声明类时触发其构造函数(或任何方法)
我们说
class foo
{
public:
string variable="";
foo(string var)
{
this->variable=var;
}
foo(){}
void operator=(string var)
{
this->variable=var;
}
}
int main()
{
foo obj="new foo object";
}
当我运行它时,它显示“错误:请求从 'const char[15]' 转换为非标量类型 'foo'”
但是当我这样做时
foo obj;
obj="new foo object";
有效
我该怎么做才能使第一种方法有效?
【问题讨论】:
-
提供一个接受
const char *参数的构造函数,并使用它来初始化variable。此外 (1) 在构造函数中查找初始化列表的使用,而不是在构造函数主体中分配成员; (2) 通常认为让operator=()具有返回类型foo &而不是void是更好的技术,并且返回*this. -
您对
this的使用完全是多余的。 -
对不起,我习惯使用“this”,因为我来自另一种编程语言
标签: c++ overloading operator-keyword