Igo*_*ges 1 c++ operator-overloading
我正在使用C++中的运算符重载,特别是赋值运算符"=".
所以,一次,我能够做到这一点:
MyClass var1;
var1 = "string";
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时,它会给我一个错误:
MyClass var2 = "string";
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?我怎样才能成功呢?
第二个例子不是调用operator=,它调用一个转换构造函数const char [],或者你在内部使用它的任何东西,只要它可以从那个(例如std::string)转换,它现在还不存在.你可以在std''OrgnlDave的答案中看到一个.它几乎完全相同
MyClass var2 ("string");
Run Code Online (Sandbox Code Playgroud)
然而,后者是明确的,而前者是隐含的.要查看差异,请创建一个构造函数并标记它explicit.这里的代码可以使用,但是你的代码不会.这可以节省混乱,当你,例如,意外的,而不是传递一个字符串MyClass,它被隐式转换时,它甚至不意味着是一个MyClass摆在首位.
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |