我正在尝试做一些可能无法与运算符重载有关的事情。我对重载赋值运算符特别感兴趣,它将接收另一个数据类型值作为其右手值。它应该如下所示:
MyClass myclass = "hello world"; <--- Wrong?
MyClass myclass2;
Myclass myclass = myclass2; <--- Right?
然后MyClass
对象应该接收字符串并处理它。不幸的是,根据我的阅读,只能将相同的数据类型值分配给自定义类。这是真的还是我弄错了?
这是我目前拥有的代码:
class MyClass {
public:
MyClass() {};
virtual ~MyClass();
MyClass& operator = (const MyClass&);
private:
char* string;
};
MyClass& MyClass::operator= (const MyClass& inc){
string = inc;
}
int main(int argc, char** argv) {
MyClass myclass = "hello world";
std::cout << myclass;
}
如您所见,我还希望cout
将对象作为字符串。基本上,我希望我的自定义类被视为一个字符串。我在 Google 和 StackOverflow 搜索引擎中的搜索否定了我的愿望,但实际上是这样还是有解决方法?
期待收到您的来信,非常感谢您提前提供的帮助!
编辑: Rollie 解决了主要问题。但是,我们将如何cout
获取自定义对象的字符串值MyClass
?这是否可能,因为对象输出只是被输出对象的内存地址?