运算符重载如何声明为纯虚函数?

如题所述

一般不这样做,因为返回值的问题,但是可以做

#include <iostream>
using namespace std;

class A
{
public:
virtual void operator ++ ()=0;
virtual void Print()=0;
};

class B:public A
{
public:
B():a(0){}
void operator ++ ()
{
cout<<"class B operator ++"<<endl;
a++;
}
void Print()
{
cout<<a<<endl;
}
private:
int a;
};

class C:public A
{
public:
C():a(0){}
void operator ++ ()
{
cout<<"class C operator ++"<<endl;
a++;
}
void Print()
{
cout<<a<<endl;
}
private:
int a;
};

int main()
{
A* p1=new B();
++(*p1);
p1->Print();
A* p2=new C();
++(*p2);
p2->Print();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-25
不能的。这是规则。
相似回答