让某个类的 '=' 运算符在声明时运行构造函数
let '=' operator of a certain class run the constructor upon declaration
我想知道是否有办法让 = 运算符在声明时触发类的构造函数(或任何方法(
比方说
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";
它有效
我该怎么做才能使第一种方法起作用?
我该怎么做才能使第一种方法起作用?
提供一个采用类型char const *
的参数的构造函数。
并使用构造函数的初始化列表来初始化成员,而不是构造函数主体中的赋值。
顺便说一句:
foo obj = "new foo object";
不调用operator=()
.
为什么不直接使用构造函数(无论如何都应该声明为显式的,所以你想要的构造实际上是不好的做法 IIRC(? 只需做:
foo obj("bar");
此外,变量不应该有默认的空值,默认构造函数将正确创建它。 还应将variable
放在初始值设定项列表中。
相关文章:
- 在声明中合并两个常量"std::set"(不是在运行时)
- 让某个类的 '=' 运算符在声明时运行构造函数
- C++函数的声明和定义不同,但它运行良好
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 在 c++ 中在运行时声明对命名空间的引用
- 在向量上声明缩减,在 1 个线程上运行给出的结果与没有 openmp 的结果不同
- 运行时错误,使用未声明的变量,C++
- 声明一个额外的变量会导致运行时出现异常
- 析构函数在 lambda 捕获说明符中声明的类实例上运行两次
- 以下代码运行后,如何在程序再次运行之前清除用户声明的变量 empName
- 声明全局变量 <vector>,代码将无法成功运行
- 声明矢量会在Netbeans中引发运行时错误
- 运行时和编译时的数组声明
- 循环和运行时错误中的C 变量声明
- VBA运行声明的函数但C++控制台应用程序运行正常时堆损坏
- 声明不相关的类,但它无法正常运行
- 声明运行时已知大小的 2D 数组的列表(或向量)
- C++ 中的运行时错误字符串声明
- 如何声明对象但不运行构造函数
- 为什么为模板实例化声明运行时多态性会导致链接器错误