返回信息流我不确定是拷贝构造函数的问题还是操作符重载的问题…先帖出来吧…
实现一个String类,完成基本的String操作
str是String类的成员变量
其中的拷贝构造函数是:
String::String(const String& st){
std::strcpy(str,st.str);
}
重载操作符是这样:
String& String::operator=(const String& st){
return String(st);
}
g++编译的时候错误信息是:
error: invalid initialization of non-const reference of type 'String&' from a temporary of type 'String*'
新人,请大家用力拍…
这是一条镜像帖。来源:北邮人论坛 / cpp / #16118同步于 2008/11/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C++重载操作符问题
yegle
2008/11/17镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不是cstring里的函数么…
【 在 PtwCJ (鲜的每日C|头像不是我,我是长毛贼~~) 的大作中提到: 】
: strcpy是怎么回事?你自己的函数?
operator=返回临时变量String(st)的引用.
operator=一般是这么写的:
{
this->...=...
...
return *this
}
【 在 yegle (一阁@SL小分队@lp是大牛) 的大作中提到: 】
: 我不确定是拷贝构造函数的问题还是操作符重载的问题…先帖出来吧…
: 实现一个String类,完成基本的String操作
: str是String类的成员变量
: ...................
明白了
网上找到的信息:
调用构造函数的时候产生了一个const的临时变量,但是=的返回值类型不是const的
不知道这么理解对不对
【 在 sunway (sunway) 的大作中提到: 】
: operator=返回临时变量String(st)的引用.
: operator=一般是这么写的:
: {
: ...................
String(str)怎么产生一个const的String?
函数就是不能返回临时量的引用
【 在 yegle (一阁@SL小分队@lp是大牛) 的大作中提到: 】
: 明白了
: 网上找到的信息:
: 调用构造函数的时候产生了一个const的临时变量,但是=的返回值类型不是const的
: ...................
可以试试这个例子
【 在 sunway (sunway) 的大作中提到: 】
: String(str)怎么产生一个const的String?
: 函数就是不能返回临时量的引用
你的返回值,不能设为String & 而是要 String,
这里你需要产生一个新的对象,而不是一个引用。
光返回一个引用,退出函数的时候就挂了。
糊涂啊…太混乱了…我该补习下基础知识了…
【 在 ericyosho (ericyosho) 的大作中提到: 】
: 你的返回值,不能设为String & 而是要 String,
: 这里你需要产生一个新的对象,而不是一个引用。
: 光返回一个引用,退出函数的时候就挂了。
: ...................