我正在寻找重载的运营商。
出于某种原因,我没有从我的重载函数中获得cout输出。
class MyString {
public:
MyString(const char aString[20]){
// copy the input string to "data"
for(int i = 0; i < 20; i++){
data[i] = aString[i];
}
}
public:
MyString operator=(const MyString copyFrom){
MyString copyTo("");
cout << "hi";
for(int i = 0; i < 20; i++){
copyTo.data[i] = copyFrom.data[i];
}
return copyTo;
}
public:
char data[20]; // a pointer to memory
};
int main() {
MyString a("hello");
MyString b = a;
cout << b.data << endl;
return 0;
}
当我运行我的代码时,我得到以下结果:
C:\ MinGW \ bin&gt; g ++ stringoverloading3.cpp
C:\ MinGW的\ BIN&GT; A.EXE 喂
C:\ MinGW的\ BIN&GT;
有什么关于超载的事情可以杀死cout吗?
答案 0 :(得分:2)
该行
MyString b = a;
不是作业。这是初始化。调用复制构造函数来初始化对象。要调用赋值运算符,请使用:
MyString b;
b = a;
为了能够使用它,必须首先实现默认构造函数。