社区
C语言
帖子详情
重载=号能不能实现这样的功能?
shiningstar
2002-05-13 10:04:32
比如一个类的实例a
我可以通过重载=号实现:
a=somesymbol;
可不可以实现:
somesymbol=a;
望指教。谢谢
...全文
74
7
打赏
收藏
重载=号能不能实现这样的功能?
比如一个类的实例a 我可以通过重载=号实现: a=somesymbol; 可不可以实现: somesymbol=a; 望指教。谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++中运算符
重载
的规则语法实例
运算符
重载
,就是对已有的运算符重新进行定义,赋予其另一种
功能
,以适应不同的数据类型。之前就知道运算符的
重载
就是将它重新定义,给它新的
功能
,为的式符合程序员的要求,一个例子就是,要将坐标相加,但是电脑不知道怎么相加,于是聪明的人就赋予了“+”新的定义。然而一些严格意义上的用法还不是很清楚。现在就在这总结一下。首先运算符
重载
的规则如下:①、C++中的运算符除了少数几个之外,全部可以
重载
,而且只能
重载
...
C++
重载
=(赋值运算符)
C++
重载
=(赋值运算符) 在前一节中,我们讲解了初始化和赋值的区别:在定义的同时进行赋值叫做初始化(Initialization),定义完成以后再赋值(不管在定义的时候有没有赋值)就叫做赋值(Assignment)。初始化只能有一次,赋值可以有多次。 当以拷贝的方式初始化一个对象时,会调用拷贝构造函数;当给一个对象赋值时,会调用
重载
过的赋值运算符。 即使我们没有显式的
重载
赋值运算符,编译器也会以默认地方式
重载
它。默认
重载
的赋值运算符
功能
很简单,就是将原有对象的所有成员变量一一赋值给新对象,这和默认拷贝构造
C++ 运算符
重载
前言 本文引用于“C语言中文网”,我整理出来放在博客,方便大家共同学习。所有知识点和代码均已亲测可用,如有疑问,可提出,一起讨论学习。 本章内容: 1. C++运算符
重载
的概念和原理 2. C++
重载
=(C++
重载
赋值运算符) 3. C++深拷贝和浅拷贝(C++深复制和浅复制) 4. C++运算符
重载
为友元函数 5. C++
实现
可变长度的动态数组 6. C++
重载
<<和>...
C++ 运算符
重载
_c++
重载
=
第 13 行,参数 os 只能是 ostream 的引用,而
不能
是 ostream 对象,因为 ostream 的复制构造函数是私有的,没有办法生成 ostream 参数对象。在 operator= 函数中,要先判断 str 是否已经指向动态分配的存储空间,如果是,则要先释放那片空间,然后重新分配一片空间,再将参数 s 指向的内容复制过去。这个表达式的值其实是 a 的引用。
重载
强制类型转换运算符时,不需要指定返回值类型,因为返回值类型是确定的,就是运算符本身代表的类型,在这里就是 double。
Java
重载
(什么是
重载
?什么时候
重载
?
重载
有什么好处?)
重载
*
重载
的背景:需求 ,在一个类中,已经
实现
了两个整数int 求和。那么能
不能
做两个float类型的求和? * 可以创建新的方法,也可以进行
重载
。 *
重载
的含义:在java中,如果有
功能
类似,可以使用相同的名字来定义不同
功能
方法; * 所谓的不同
功能
:不是主体
功能
不同,而是参数不同。 * 参数不同包括:数量、类型、顺序不同(3者其1不同即可) 方法调用...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章