CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

类型问题

楼主losky(理性的人背叛内心,感性的人背叛现实)2005-05-01 11:08:35 在 C/C++ / C++ 语言 提问

#include<iostream>  
  using   namespace   std;  
  class   str  
  {  
  public:  
  void   cou();  
  };  
  void   str::cou()  
  {  
  cout<<"it   is   str"<<endl;  
  };  
  class   str1:public   str  
  {  
  public:  
  void   cou();  
  };  
  void   str1::cou()  
  {  
  cout<<"it   is   str1;"<<endl;  
  };  
  class   str2:public   str  
  {  
  public:  
  void   cou();  
  };  
  void   str2::cou()  
  {  
  cout<<"it   is   str2"<<endl;  
  };  
  void   fun(str   *p)  
  {  
  p->cou();  
  }  
  void   main()  
  {  
  str   s;  
  str1   s1;  
  str2   s2;  
  str   *p;  
  p=&s;  
  fun(p);  
  p=&s1;  
  fun(p);  
  p=&s2;  
  fun(p);  
  }  
  为什么是输出三个   it   is   str;  
  而不是   it   is   str;  
  it   is   str1;  
  it   is   str2; 问题点数:0、回复次数:7Top

1 楼xteaj(半桶水)回复于 2005-05-01 11:11:47 得分 0

你又没用virtual,所有函数调用都直接调用str*类型的函数,这个结果你已经知道了。Top

2 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-05-01 11:12:20 得分 0

你的str的cout没声明成virtual,  
  是静态绑定的.  
   
  所以都是输出的是str的coutTop

3 楼crybird(寒号鸟)回复于 2005-05-01 11:12:59 得分 0

因为cou()不是虚函数Top

4 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-05-01 11:13:54 得分 0

把cou设为虚函数Top

5 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-05-01 11:15:22 得分 0

上边写错了,不是cout,是cou,  
   
  静态绑定是因你的指针类型而定的调用什么什么类型的函数,  
  不会为每个对象产生虚函数表的  
   
  只有动态绑定才会根据你的具体对象的类型调用具体的函数.  
   
  Top

6 楼llf_hust()回复于 2005-05-02 17:28:12 得分 0

#include<iostream>  
  using   namespace   std;  
  class   str  
  {  
  public:  
  virtual   void   cou();  
  };  
  Top

7 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-05-02 17:51:10 得分 0

加virtual,才能实现动态绑定。Top

相关问题

  • 类型转换!
  • 字段类型
  • 变量类型
  • 数据类型??
  • Binary类型??????
  • 类型转换???
  • asp类型
  • 类型转换????
  • ResultSet类型 (JSP)
  • 文件类型

关键词

  • 函数
  • virtual
  • cou
  • 调用
  • 类型
  • 绑定
  • str
  • fun
  • cout

得分解答快速导航

  • 帖主:losky

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo