首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为了证实是不是essential c++错了,问几个小问题,请进来帮帮忙

2012-03-11 
为了证实是不是essential c++错了,问几个问题,请进来帮帮忙运算符中不能重载的是哪四个?essentialc++上说

为了证实是不是essential c++错了,问几个问题,请进来帮帮忙
运算符中不能重载的是哪四个?
essential   c++上说是   :.   ,     .*     ,     ::       ,       ?:

然后有人说*也不能重载。


++(前缀)和*的重载需不需要参数?
essential   c++上说不需要,反而是++(后缀)需要参数

然后有人说运算符重载就可以看成函数,参数就是运算符右边的东西,运算符右边有东西,重载时就要有参数


this指针指向哪边?
essential   c++上说是左边。然后在重载*和++(前缀)的时候让我觉得this是指向了右边。因为*和++(前缀)左边显然没有东西。

然后有人说指向左边是没错的,但是返回的往往都是引用

[解决办法]
运算符中不能重载的是:. .* :: ?:
*可以重载
++(前缀)和*的重载不需要参数,++(后缀)需要参数
运算符重载就可以看成函数
但是“参数就是运算符右边的东西,运算符右边有东西,重载时就要有参数”有偏颇,这个规则仅对部分操作符(主要是在C里面的二目操作符)有效;对++/--(前缀)以及单目操作符(*、&等等)则不适用。简单地判断规则是,如果在类里定义了运算符重载,那么参数个数为运算符所需的操作数个数减一。
this指针指向第一个操作数。如果运算符只有一个操作数,那么this就指向它;如果有两个,就指向左边的那一个。
至于返回是否是引用,是由用户自行决定的,一般可以与基本类型的运算符相一致。如果基本类型的对应运算符返回左值,则定义为引用,否则定义为非引用。如operator+=返回引用,operator+返回非引用。

热点排行