请叫高手一个基础问题,不用计算。是语法
时间:2011-12-17
来源:互联网
假设string 类私有部分是:
private:
char * str;
int len
string & string::operator =(const string & st)
{
if(this = & st)
retrun * this;
delete [] str;
len = st.len;
str = new char [len+1];
strcpy(str, st.str);
retrun * this
}
....
....
那么有三个string类对象 s1, s2,s3;
我就可以这样操作 s1 =s2 =s3;
但是书上说的是复制操作符"=" 只能有类成员函数重载的嘛,
我认为应该s1.operator =(s2);这样的格式才对啊,为什么可以直接,s1=s2可以喃?
作者: zjxzjx54 发布时间: 2011-12-17
作者: Johnkey_Chen 发布时间: 2011-12-17
如果只能写成函数调用的形式,那还叫做操作符么?
作者: yisikaipu 发布时间: 2011-12-17
s1=s2;
编译器会为你解释为
C/C++ code
s1.operator=(s2);
C++编译器在编译中遇到操作符时会去检查该操作符是否被使用对象的类重载或全局重载
作者: keven1868 发布时间: 2011-12-17
意义是一样的。
作者: d694671439 发布时间: 2011-12-18
a.operator=(b);等价于a=b;
作者: qscool1987 发布时间: 2011-12-18
作者: cl_gamer 发布时间: 2011-12-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28