由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问c++中操作符可以声明为虚函数吗?
相关主题
friend function 不能virtual 怎么搞呢?一个C的void指针的问题
C++ virtual function 定义在 derived class 会怎么样? 请问c++为什么会编译失败?
基本功不扎实,问个问题c++ iterator 弱问
【讨论】问一道很简单的C++题。。。。 (转载)c++ 得最基本问题
C++ 弱问一个virtual function question
C++问题请教一个class design的问题
问个C++ virtual function的问题 (转载)为啥gcc找不到类的构造函数?
弱问一个virtual function的问题虚函数access权限改变问题
相关话题的讨论汇总
话题: sum话题: int话题: virtual话题: void话题: 操作符
进入Programming版参与讨论
1 (共1页)
c*****o
发帖数: 178
1
这里操作符是通常作为function member的操作符,比如+=
class sum//The base class
{
public:
sum(void);
virtual sum& operator+=(const sum&);
virtual void print_result();
virtual ~sum(void);
};
class sum_int ://The derived class
public sum
{
public:
sum_int(void);
sum_int(const int&);
virtual sum_int& operator+=(const sum_int&);
virtual void print_result();
virtual ~sum_int(void);
private:
int value;
};
int main()//The main function
{
int test[] = {1,2,3};
sum_int A(
X****r
发帖数: 3557
2
sum& operator+=(const sum&);和
sum_int& operator+=(const sum_int&)是两个不同的函数,
后者没有override(中文是什么?)前者,而是重载(overload)了同一个操作符。

【在 c*****o 的大作中提到】
: 这里操作符是通常作为function member的操作符,比如+=
: class sum//The base class
: {
: public:
: sum(void);
: virtual sum& operator+=(const sum&);
: virtual void print_result();
: virtual ~sum(void);
: };
: class sum_int ://The derived class

c*****o
发帖数: 178
3
那就是说,因为derived class 中的 +=的rhs肯定是和base class中的rhs类型不同,
所以不能是virtual function?

【在 X****r 的大作中提到】
: sum& operator+=(const sum&);和
: sum_int& operator+=(const sum_int&)是两个不同的函数,
: 后者没有override(中文是什么?)前者,而是重载(overload)了同一个操作符。

X****r
发帖数: 3557
4
1.没有规定derived class 中的 +=的rhs肯定是和base class中的rhs类型不同,
你要愿意写得一样也没有错误,取决于你要达到什么目的了。
2.当然可以是virtual function。你的例子里不就是virtual function吗,
只不过你写了两个不同的virtual function而已。
你可以参考一下double dispatch。

【在 c*****o 的大作中提到】
: 那就是说,因为derived class 中的 +=的rhs肯定是和base class中的rhs类型不同,
: 所以不能是virtual function?

c*****o
发帖数: 178
5
恩,看了一下double dispatch,明白该怎么做了,非常感谢!大牛~

【在 X****r 的大作中提到】
: 1.没有规定derived class 中的 +=的rhs肯定是和base class中的rhs类型不同,
: 你要愿意写得一样也没有错误,取决于你要达到什么目的了。
: 2.当然可以是virtual function。你的例子里不就是virtual function吗,
: 只不过你写了两个不同的virtual function而已。
: 你可以参考一下double dispatch。

1 (共1页)
进入Programming版参与讨论
相关主题
虚函数access权限改变问题C++ 弱问一个
[合集] 基类函数已经是virtual了,为啥子类还要virtual啊?C++问题
为什么derived object没有vptr?问个C++ virtual function的问题 (转载)
C++ Q98: Call member function in virtual function (转载)弱问一个virtual function的问题
friend function 不能virtual 怎么搞呢?一个C的void指针的问题
C++ virtual function 定义在 derived class 会怎么样? 请问c++为什么会编译失败?
基本功不扎实,问个问题c++ iterator 弱问
【讨论】问一道很简单的C++题。。。。 (转载)c++ 得最基本问题
相关话题的讨论汇总
话题: sum话题: int话题: virtual话题: void话题: 操作符