`
bliuqing
  • 浏览: 65245 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

c++虚函数

    博客分类:
  • C++
 
阅读更多

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,析构函数可以是虚函数,而且通常声明为虚函数。

 

内联是在编译期决定的,而且直接展开为代码,而虚函数是在运行期决定的

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics