c++里定义纯虚函数

class base
{
public:
virtual void fun()=0;
};
void base::fun() {cout<<"Base"<<endl;}

class D:public base
{
public:
virtual void fun() {cout<<"D"<<endl;}
};
class C:public base
{
public:
virtual void fun() {base::fun();}
};
这里这么麻烦,为什么不直接这样呢
class D:public base
{
public:
void fun() {cout<<"D"<<endl;}
};
class C:public base
{
public:
void fun() {cout<<"Base"<<endl;}
};
不用纯虚函数有什么不可以的

你概念有点混淆了,这个virtual void fun()=0; 是纯虚函数;virtual void fun(); 是虚函数。它们是有区别的。有纯虚函数的类一般都是虚基类,主要用于继承,让子类来实现虚函数。虚函数的作用当然是多态了~~

class base
{
public:
void base::fun() {cout<<"Base"<<endl;}
};
class D:public base
{
public:
virtual void fun() {cout<<"D"<<endl;}
};
class C:public base
{
public:
virtual void fun() {base::fun();}
};
main()

base* c1=new c;
c1->fun() ;
return 0;
} 如果fun 是虚函数显示什么,不是虚函数显示什么?自己试试
温馨提示:答案为网友推荐,仅供参考
相似回答