社区
C语言
帖子详情
重载=号能不能实现这样的功能?
shiningstar
2002-05-13 10:04:32
比如一个类的实例a
我可以通过重载=号实现:
a=somesymbol;
可不可以实现:
somesymbol=a;
望指教。谢谢
...全文
112
7
打赏
收藏
重载=号能不能实现这样的功能?
比如一个类的实例a 我可以通过重载=号实现: a=somesymbol; 可不可以实现: somesymbol=a; 望指教。谢谢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jerry921
2002-05-14
打赏
举报
回复
to: Muf(沐枫)
>Class1 __class1 = __class2; //此处调用的是复制构造函数>
>//它与下面的形式是等价的:
>Class1 __class1(__class2);
你把那个_class2换成一个整型或其它类型变量也是一样的,我的说法可能有问题,就是你这种意思。
编译器在遇到这种赋值时,就找合适的构造函数做处理,不用再重载=了。
kof99th
2002-05-14
打赏
举报
回复
可以用友元函数实现,Muf(沐枫) 已经说过了 。
Muf
2002-05-13
打赏
举报
回复
To: jerry921(jerry)
>> class=type,用构造函数实现的
构造函数并非赋值运算函数。
例如:
Class1 __class1 = __class2; //此处调用的是复制构造函数
//它与下面的形式是等价的:
Class1 __class1(__class2);
而不处在类型声明语句的“=”号才是赋值运算:
Calss1 __class1;
__class1 = class2;//它调用的是__class1.operator=(...)或operator(Class1& __left, ...)
Muf
2002-05-13
打赏
举报
回复
>>我可以通过重载=号实现:
>>1) a=somesymbol;
>>可不可以实现:
>>2) somesymbol=a;
对于运算号(包括其它二元运算符)重载,有两种实现方式:成员函数重载和友元(friend)函数重载。
对于1)来说,这两种实现方式都可以。
但对于2)来说,就只有友元(全局)函数可以做到。
类似于<< >>这两个ios标准的运算符。对于一个类型,想要实现通过cout输出到屏幕,就只有重载<<友元了。
------------------------------------------
友元赋值运算符形式如下:
T1& operator=(T1& a, const T2& b)
记得在T1中说明该函数为友元(friend)
成员赋值运算符形式如下:
T1& T1::operator=(const T2& b)
shiningstar
2002-05-13
打赏
举报
回复
具体形式怎么写?
谢谢
晨星
2002-05-13
打赏
举报
回复
重载类型转换符,打个比方,如果somesymbol是int型的,就要重载int转换符。
jerry921
2002-05-13
打赏
举报
回复
class=type,用构造函数实现的,
比如
classs abc
{
public:
abc(int a);
....
}
abc aa;
aa=3;
就是如此;
而int b=aa就要重载=了。
C++操作符
重载
(
不能
被
重载
的操作符)
C++中的运算符: 名称 运算符 算数运算符 +、-、/、%、++、– 位操作运算符 &amp;amp;、 逻辑运算符 !、&amp;amp;&amp;amp;、 比较运算符 &amp;lt;、&amp;gt;、&amp;lt;=、&amp;gt;=、==、!= 赋值运算符 =、+=、-=、*=、/=、%=、 其
C++中=
号
的
重载
以及=
号
赋值与赋值构造函数的区别
=
重载
与使用复制构造一样需要重新为对象分配内存,并且需要注意如果对象没有被提前创建而是采用了MySring L=M;的形式系统还是会采用复制构造而不是=
重载
; class MyString { private: char*str; int len; public: MyString() {}; MyString(const char*str); void disp(); MyString&operator=(const MyString&S); void SetStr(int
为什么operator<<左移运算符
不能
重载
成员函数,而只能
重载
为友元函数?
关于运算符
重载
1.首先我们通过operator+加
号
运算符来了解成员函数与友元函数的区别。1.加
号
运算符的成员函数2.加
号
运算符的友元函数2.operator<<左移运算符
不能
重载
成员函数,而只能
重载
为友元函数。1.左移运算符成员函数达不到我们的效果2.如果使用友元函数 1.首先我们通过operator+加
号
运算符来了解成员函数与友元函数的区别。 首先我们来看一下operator+加
号
运算符,因为他的
重载
继可
实现
成员函数
重载
,也可以
实现
友元函数
重载
。 1.加
号
运算符的成员函数 我们来看一下加
号
运
C++赋值运算符
重载
为何
不能
重载
为友元函数,为何
不能
被继承
C++赋值运算符
重载
为何
不能
重载
为友元函数,为何
不能
被继承
=
号
重载
的注意事项
对于以下类中
重载
的=
号
,这可能是大家常采用的写法: classtmp { private: char*strTmp; intm_iLength; public: tmp(){strTmp=NULL;} ~tmp(){DelStr();} voidInitStr(char*str,intiLength) { ...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章