C++中虚函数的问题

vakano 2011-04-28 03:10:44
请先看下例子,
class A{

public:
virtual void f(){cout<<"A"<<endl;}

};

class B:public A()
{void f(){cout<<"B"<<endl;}
};



void main(){
A *pa; B b;
pa=b;
pa->f();
}

为什么想调用B类的方法f()时都是通过基类指针pa来调用,为什么不直接用b.f()直接调用呢,这样将子类对象地址赋给基类指针,再通过基类指针调用子类的方法不是舍近求远吗?
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
enic 2011-04-28
  • 打赏
  • 举报
回复
几万份怎么来的额,,,
CodeMung 2011-04-28
  • 打赏
  • 举报
回复
多态是面向对象的特性之一,这个简单的例子只是为了学习多态,无法体现它的优势。在程序更复杂的情况下,统一使用基类指针,而自动调用不同的派生类函数是很有用的。
就想叫yoko 2011-04-28
  • 打赏
  • 举报
回复
pa=b;
应该是
pa=&b;吧
你理解的没错
不过这样做你以后看了设计模式就知道了
shc8marry 2011-04-28
  • 打赏
  • 举报
回复
虚函数是实现多态的,
www_adintr_com 2011-04-28
  • 打赏
  • 举报
回复
这样的例子确实没有展示出虚函数的优势所在,只是展示了虚函数的用法罢了.
bdmh 2011-04-28
  • 打赏
  • 举报
回复

A *pa = new B;
pa->f();
KID_coder 2011-04-28
  • 打赏
  • 举报
回复
pa=&b;
直接用b.f()直接调用可以呀
这个是让你了解虚函数的例子而已吧~
pengzhixi 2011-04-28
  • 打赏
  • 举报
回复
如果是new的呢?LZ你再去看看多态那章节吧。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧