免费注册 查看新帖 |

Chinaunix

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

[C++] 关于c++:对象和指针的使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-11 21:40 |只看该作者 |倒序浏览
class OUT
{
public:
  void out(){cout<<"out";}
private:
int x;
};

OUT  a;
OUt *p;
p=&amp;

则下面两个输出的结果相同
a.out();//输出out
p->;out();//输出out

但是如果此时class OUT::public BASE
class BASE
{
private:
  int y;
public:
  void out(){cout<<"base";}

};


OUT out1;

BASE *pbase=&out1;

则下面的两个输出结果却是不一样的
out1.out();//输出out
pbase->;out();//输出base


大家解释一下原因啊。
到底用.和指针来访问成员函数有什么区别呢??

论坛徽章:
0
2 [报告]
发表于 2003-07-11 22:08 |只看该作者

关于c++:对象和指针的使用

这两个没有继承关系
直接赋值时不报错吗

另外要知道类的保存形式
一个类所有的函数只是保存成一个函数表 调用时通过这个表指向

另外这个问题偶等会试试看先

论坛徽章:
0
3 [报告]
发表于 2003-07-12 09:34 |只看该作者

关于c++:对象和指针的使用

class OUT::public BASE

论坛徽章:
0
4 [报告]
发表于 2003-07-12 09:37 |只看该作者

关于c++:对象和指针的使用

out是成员函数,不是虚函数。如果你是编译器,告诉你BASE* pBase,那么pBase->;out()你会调哪个?当然是BASE的了。

论坛徽章:
0
5 [报告]
发表于 2003-07-12 10:30 |只看该作者

关于c++:对象和指针的使用

OUT out1;

BASE *pbase=&out1;
指针pbase 的类型是BASE, 但指向 OUT 的对象

pbase->;out();
是用BASE类的方法, 还是OUT类的方法?

early binding 是根据指针pbase 的类型, 所以用BASE类的方法

late binding 是根据指针pbase 指向的对象, 所以用 OUT类的方法

要实现late binding  就在基类的方法前加个 virtual

详细见下面代码:

  1. #include <iostream>;
  2. using namespace std;

  3. class BASE
  4. {
  5. private:
  6. int y;

  7. public:
  8. virtual void out(){cout<<"base"<<endl;}

  9. };

  10. class OUT : public BASE
  11. {
  12. public:
  13. void out(){cout<<"out"<<endl;}

  14. private:
  15. int x;
  16. };

  17. int main()
  18. {
  19.    OUT a;
  20.    OUT *p;
  21.    p = &
  22.    
  23.    a.out();
  24.    p->;out();   cout<<endl;
  25.    
  26.    OUT out1;
  27.    out1.out();  
  28.      
  29.    BASE *pbase=&out1;
  30.    pbase->;out();

  31. }
复制代码


比较与没加 virtual 的。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP