class employee{
public:
employee(){
cout << "employee construction" << endl;
}
virtual ~employee(){
cout << "employee destruction" << endl;
}
virtual fuc1()
{
cout << "base fuc1" << endl;
}
virtual void fuc3() =0 ; //含有纯虚函数,employee不能被实例化,但是可以声明指向它的指针
};
class programmer: public employee{
public:
programmer(){
cout << "programmer construction" << endl;
}
~programmer(){
cout << "programmer destruction" << endl;
}
virtual fuc1() //这里,有没有virtual关键字都一样
{
cout << "extended fuc1" << endl;
}
virtual void fuc3()
{
}
};
int main(int argc, char* argv[])
{
programmer pg1;
pg1.fuc1();
employee *pe = new programmer( );
pe->fuc1();
delete pe;
return 0;
}
///
虚函数是派生类 "可以 "修改的成员函数。
纯虚函数是派生类 "必须 "修改的成员函数。
若派生类的父类有纯虚函数,而派生类没有实现这个纯虚函数,则报语法错误。
/////
虚函数的要求:
1,只有类的成员函数才能说明为虚函数,这是因为虚函数仅适用于有继承关系的类对象。
2,静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。
3,内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的。即使虚函数在类的内部
定义,编译时,仍将其看作非内联的。
4,构造函数不能是虚函数,因为构造时,对象还是一片未定型的空间。
5,析构函数可以是虚函数,而且通常声明为虚函数。
内联是在编译期决定的,而且直接展开为代码,而虚函数是在运行期决定的
分享到:
相关推荐
c++虚函数.C++中的虚函数的作用主要是实现了多态的机制。
C++虚函数及虚函数表解析,内容详细,分析清晰,推荐给大家。
C++虚函数调用机制初探.pdf
虚函数表中虚函数的分布情况;其中包括发生继承的情况下虚函数表中虚函数的分布情况;
学习 C++ 的同志不知道有没有和我一样遇到过这样的困惑:C++中的虚函数到底怎么实现的?在各种继承关系中,虚函数表的结构到底是什么样的?曾经我是很想当然,可是后来在使用ATL的过程中,我发现并不是我想的那样。...
详细的介绍了C++虚函数的用法,从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,...
C++ 虚函数表详细解析 比较详细的讲解和图表介绍
详细讲述c++虚函数实现机制; 对于理解com等技术有实用价值
C++虚函数及其纯虚函数学习。 虚函数:子类可以实现具体函数,如果子类没有实现基类回自动补上。 纯虚函数:子类必须实现,不实现编译 不能通过。 虚析构:基类必须用虚析构函数这样子类析构(消失灭亡)时候才会...
C++虚函数的应用,简单介绍了c++虚函数的应用以及实现
C++虚函数表的测试代码,用于学习C++虚函数的调用关系。
很好的虚函数表解析, 代码,图,文并茂,对多态的理解会非常深刻
谨以此例说明困绕我半年来的问题,引用潘爱民的话:"C++(或COM)是以虚函数表来调用函数的".
C++课程资源,中国农业大学C++课程课件,信息与电气工程学生专属。
C++虚函数、虚基类、C++实例、运算符重载
C++虚函数的应用举例,以及一些虚函数的特点分析及注意事项