C++ Can';不能从重载函数中删除
我在到处找过载的操作符 由于某些原因,我无法从重载函数中获得cout输出C++ Can';不能从重载函数中删除,c++,operator-overloading,cout,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];
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;
}
类MyString{
公众:
MyString(const char aString[20]){
//将输入字符串复制到“数据”
对于(int i=0;i<20;i++){
数据[i]=收敛[i];
}
}
公众:
MyString运算符=(const MyString copyFrom){
MyString copyTo(“”);
库特
超载会杀死库特吗?线路
MyString b = a;
不是赋值。它是初始化。将调用复制构造函数来初始化对象。若要调用赋值运算符,请使用:
MyString b;
b = a;
为了能够使用它,必须首先实现默认构造函数。行
MyString b = a;
不是赋值。它是初始化。将调用复制构造函数来初始化对象。若要调用赋值运算符,请使用:
MyString b;
b = a;
为了能够使用它,必须首先实现默认构造函数。当然,除非我的重载实际上没有被调用……hmm这个MyString b=a;
不是赋值(它是初始化)您的C++文本本应该解释这个。BTW数组和指针与代码建议中的注释不一样,赋值操作符应该将参数作为<代码> const 参考。您的赋值运算符(实际上不调用)不会更改已分配的实例。并且您的构造函数读取的内容超过了其输入缓冲区的结尾,这是未定义的行为。当然,除非我的重载实际上没有被调用……hmm此MyString b=a;
不是一个分配(它是一个初始化)您的C++文本本应该解释这个。BTW数组和指针与代码建议中的注释不一样,赋值操作符应该将参数作为<代码> const 参考。您的赋值运算符(实际上不调用)不更改分配的实例。并且构造函数读取的内容超过其输入缓冲区的结尾,这是未定义的行为。