免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1194 | 回复: 4
打印 上一主题 下一主题

[C++] c++虚函数问题?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-02 09:26 |只看该作者 |倒序浏览
class a
{
            virtual  void fn(...);
            virtual ~a();
}
class b:public a
{
           virtual void fn();
           virtual ~b();
}

int main()
{
          a *temp=new (b);
          a.fn();
}
这是程序框架,请问:
将可变参数应用与虚函数的意义?
对于类中的析构函数为什么也要用virtual?
并请解释a.fn()调用的是那个类中的fn()?

论坛徽章:
0
2 [报告]
发表于 2005-11-02 09:52 |只看该作者
你原来给的代码根本编译不过去,语法错误N多,自己下去看看吧,我改为:

  1. #include <stdio.h>

  2. class a
  3. {
  4. public:
  5.         virtual  void fn()
  6.         {
  7.                 printf("in an");
  8.         }
  9.         virtual ~a()
  10.         {
  11.                 printf("in ~an");
  12.         }
  13. };

  14. class b : public a
  15. {
  16. public:
  17.         virtual void fn()
  18.         {
  19.                 printf("in bn");
  20.         }
  21.         virtual ~b()
  22.         {
  23.                 printf("in ~bn");
  24.         }
  25. };

  26. int main()
  27. {
  28.         a *temp=new (b);
  29.         temp->fn();
  30.         delete temp;

  31.         return 0;
  32. }
复制代码


1.虚函数也和普通的函数一样可以是参数不确定的,看你的需要
2.virtual析构函数的原因是为了保证继承链上面的所有类的资源都可以正确的释放.
3.用的是b的fn()

论坛徽章:
0
3 [报告]
发表于 2005-11-02 11:02 |只看该作者
楼上讲得挺明白了,要不看看书吧,做个练习理解的会好一点

论坛徽章:
0
4 [报告]
发表于 2005-11-02 11:31 |只看该作者
可以用基类指针操作派生类。

论坛徽章:
0
5 [报告]
发表于 2005-11-02 13:00 |只看该作者
a *temp=new (b);
怎么会有这种想法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP