类运算符'='定义
Class operator '=' definition
在命名空间MySpace中,我已经创建了我的自定义字符串类:
namespace MySpace {
const std::string bws = "hello";
class string {
public:
std::string s ;
string(void) :s(bws) {}
string(const std::string & _s ) : s(bws) {};
operator std::string & (void) {return s;}
};
}
我把MySpace::string f
赋值给std::string d
。
int main( int argc, char ** argv ) {
MySpace::string f("ddd");
std::string d=f;
std::cout<<d<<std::endl;
}
为什么这个工作?我没有为MySpace::string定义操作符=
?
为什么当我从MySpace::string
(operator std::string & (void) {return s;}
行)删除操作符&
定义时不起作用?
&
不是=
您已经实现了一个转换操作符:
operator std::string & (void) {return s;}
它基本上告诉编译器如何将MySpace::string
转换为std::string&
。
这里的&
意味着引用,你在这里重载的"operator
"是"operator std::string
",而不是"operator &
"。(这当然不是很迂腐)。
查看详细信息:
http://en.cppreference.com/w/cpp/language/cast_operator相关文章:
- 在 C++ 的自定义运算符中删除与删除[](不同于常见的删除与删除[]问题)
- 自定义运算符重载C++,无开销
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 如何使用C++将MXNET自定义运算符构建到单独的库/包中?
- 模板类的用户定义运算符上的 C++ 隐式转换
- 什么是编程语言支持定义您自己的自定义运算符?
- 如何在Qt中为矩阵类定义[ ][ ]运算符?
- 在 c++ 迭代器中,我应该同时定义运算符== 和运算符!=吗?
- 在 rxcpp 中创建自定义运算符
- 错误 C2676;在C++的二叉搜索树类中定义 ++ 运算符时遇到问题
- std::map :使用自定义运算符时更新密钥
- 最初定义运算符C++在哪里
- 如何在Tensorflow Lite中添加自定义运算符
- 如何在 rxcpp 自定义运算符中正确推断泛型
- 在模板化类之外定义运算符重载
- 为类定义之外的模板类定义运算符[]()(数组订阅)
- 是否可以在类定义之外定义运算符[]()(数组订阅)
- C++ 重新定义运算符<() 和运算符!=()
- 如何将上下文信息传递给自定义运算符<<适用于 std::iostream
- 无法在C++中定义++运算符,这里有什么问题?