类成员函数继承(virtual、非virtual)
来源:互联网 发布:linux 挂起进程 编辑:程序博客网 时间:2024/04/29 07:54
转帖地址:http://www.cppblog.com/liyuxia713/archive/2010/01/08/105170.html
类继承
★ 对于父类函数(virtual、非virtual),如果子类没有同名函数,则正常继承
★ 对于父类函数(virtual、非virtual),如果子类有同名函数,无同型函数,则不能调用父类函数
★ 对于父类函数(virtual、非virtual),如果有同型函数:
----非virtual函数由指针类型决定调用哪个
----virtual函数由指针指向的对象决定调用哪个(运行时决定)
//如果对于父类函数(virtual/非virtual),如果子类没有同名函数,则正常继承
classBase
{
public: void func(int i){cout <<"Base::func(int)"<< endl; }
};
class Derived : public Base
{ };
int main()
{
Base *pb = new Derived();
pb->func(1); //Base::func(int)
delete pb;
Derived *pd = new Derived();
pd->func(1); //Base::func(int)
delete pd;
}
//对于父类函数(virtual、非virutal),子类有同名函数,无同型函数,则不能调用父类函数
class Base
{
public:
void func(int i){ cout <<"Base::func(inti)"<< endl; }
virtual void func2(int i) { cout <<"Base::func2(int i)" << endl;}
};
class Derived : public Base
{
public:
void func(){ cout<<"Derived::func()"<< endl; }
void func2(){ cout<<"Derived::func2()"<< endl; }
};
int main()
{
Base *pb = new Derived();
pb->func(1); //Base::func(int)
pb->func2(1); //Base::func2(int i)
delete pb;
Derived *pd = new Derived();
pd->func(); //Derived::func()
pd->func2(); //Derived::func2()
// pd->func2(1); //不能调用
delete pd;
}
//对于父类函数(virtual、非virtual),如果有同型函数:
//----非virtual函数由指针类型决定调用哪个
//----virtual函数由指针指向的对象决定调用哪个(运行时决定)
class Base
{
public:
void func(int i){ cout <<"Base::func(inti)"<< endl; }
void func() {cout << "Base::func() "<< endl;}
virtual void func2(int i) { cout <<"Base::func2(int i)" << endl;}
};
class Derived : public Base
{
public:
void func(int i){ cout<<"Derived::func()"<< endl; }
void func2(int i){ cout<<"Derived::func2(int i)"<< endl; }
};
int main()
{
Base *pb = new Derived();
pb->func(1); //Base::func(int i)
pb->func(); //Base:func()
pb->func2(1); //Derived::func2(inti)
delete pb;
Derived *pd = new Derived();
pd->func(1); //Derived::func(int i)
// pd->func(); //不能调用
pd->func2(1); //Derived::func2(int i)
delete pd;
}
- 类成员函数继承(virtual、非virtual)
- C++ 类成员函数继承(virtual、非virtual)
- 类成员函数继承(virtual、非virtual)
- 类成员函数继承(virtual、非virtual)
- C++ 类成员函数继承(virtual、非virtual)
- 在类的非virtual函数中调用virtual函数
- 构函数virtual与非virtual区别
- cpp笔试-virtual函数类继承问题
- 【C++面向对象】类继承、多态与virtual成员
- Virtual 和 非 virtual
- 浅谈virtual函数与其他成员函数(下)
- virtual继承
- cpp——类——virtual成员函数
- 浅谈virtual函数与其他成员函数
- 4.2 Virtual Member Functions(虚拟成员函数)
- 析构函数virtual与非virtual区别
- 析构函数virtual和非virtual的区别
- 析构函数virtual与非virtual区别
- xargs 中处理多个参数的用法
- word打印的节与页问题
- 咬尾巴(非惰性)
- 开源EhCache 下载-软件简要介绍-开发文档-官方开源主页
- 政府决心不可低估
- 类成员函数继承(virtual、非virtual)
- qt 支持 gif,arm,嵌入式
- 咬尾巴惰性
- Ubuntu 搭建 svn服务器
- 选择网站空间的技巧
- Flex4的richeditabletext
- 咬尾巴输出格式改进
- 《HP大中华区总裁孙振耀退休感言》
- Java基础:Java问号表达式