我刚刚开始学习基本的C语法,我对我遇到的一段代码感到有些困惑.
对于一个名为MyString的类,有一个运算符重载定义为:
ostream& operator<
{
os << s.data;
return os;
}
然后在一些驱动函数中声明:
cout << s3 << endl;
运行,其中s3是对象类型MyString.结果打印出s3的值.
我不太明白这个陈述是如何起作用的.在搞乱之后,似乎只需要调用一次复制构造函数,然后解构3个对象.这条线的确如何运作?看起来操作符接受对ostream和MyString的引用,但是它既不是endl也不是endl?另外,当有两个“<
解决方法:
这是一个非常普遍的问题,但我会尽力消除你的误解.
当你说ostream& operator
当你做cout<< s3<< endl;,它与执行运算符<
从该代码中调用复制构造函数和MyString的析构函数.您看到的消息来自其他地方.
标签:c,operator-overloading
来源: https://codeday.me/bug/20190726/1540841.html