您的位置:首页 > 编程语言 > C语言/C++

C++ 之 虚函数、纯虚函数

2014-08-11 09:33 176 查看
在Java语言中,如果类B继承类A,在A中有一个void say()方法,则在B中直接重写void say()方法即可覆写此方法。但在C++中,如果要覆写父类的一个函数,父类需将此方法定义为虚函数。

 

请看下面例子:

#include <iostream>
#include <cstdio>

class people{

public:
void say(){
printf("hello people.\n");
}
};

class man:public people{

public:
void say(){
printf("hello man.\n");
}
};

int main(){

people * p = new man();
p->say();

system("pause");
return 0;
}

输出结果为:

hello people.

 

修改一下people类,其他代码不变。

class people{

public:
virtual void say(){ //定义为虚函数
printf("hello people.\n");
}
};

输出结果为:

hello man.hello man.

 

 

 

纯虚函数,跟Java中的抽象函数使用差不多。

#include <iostream>
#include <cstdio>

class people{

public:
virtual void say(){ //定义为虚函数
printf("hello people.\n");
}

virtual void hear() = 0; //纯虚函数,子类必须重写这个函数
};

class man:public people{

public:
void say(){
printf("hello man.\n");
}

virtual void hear(){ //重写父类的纯虚函数
printf("hear man.\n");
}
};

int main(){

people * p = new man();
p->say();
p->hear();

system("pause");
return 0;
}

结果为:

hello man.

hear man.

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 虚函数 纯虚函数