无法在重载函数内进行cout

时间:2017-02-19 23:35:48

标签: c++ operator-overloading cout

我正在寻找重载的运营商。

出于某种原因,我没有从我的重载函数中获得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吗?

1 个答案:

答案 0 :(得分:2)

该行

MyString b = a;

不是作业。这是初始化。调用复制构造函数来初始化对象。要调用赋值运算符,请使用:

MyString b;
b = a;

为了能够使用它,必须首先实现默认构造函数。