C++之对象切割
来源:互联网 发布:啄木鸟雕刻软件安装 编辑:程序博客网 时间:2024/04/29 02:24
FROM:华山大师兄 http://www.cnblogs.com/biyeymyhjob/archive/2012/09/07/2674880.html
问题描述
程序如下:
#include <iostream>#include <cstdlib>using namespace std;class Base{ public: virtual void fun() { cout << "Base fun() is Called" << endl; }};class Derived:public Base{ public: void fun() { cout << "Derived fun() is Called" << endl; } };void fun1(Base b){ b.fun();}void fun2(Base *b){ b->fun();}void fun3(Base &b){ b.fun();}int main(){ Derived d; fun1(d); fun2(&d); fun3(d); system("pause"); return 0;}
最后的执行结果:
原因解释
从上面可以看出 指针和地址传递可以实现虚函数的多态功能,而在fun1(Base b)中 传递Derived对象时发生了的对象切割,而对象切割不会发生多态,所以调用Base当中对应的函数。
综上:多态的实现是通过指针和引用;而对象的转换只会造成对象切割,不能实现多态
- C++之对象切割
- C++之对象切割
- 切割Box2D对象之三:切割自定义的sprite
- effective c++ 记录之对象切割问题
- 对象切割
- LeetCode之字符串(C++)的切割简单实现
- c++对象切割
- 切割Box2D对象(一)
- 切割Box2D对象(二)
- c++对象切割
- c++ 对象切割示例
- c++对象切割
- java 对象切割
- c++ 对象切割
- C++对象切割
- [C]切割字符串
- C/C++切割字符串
- 字符串切割之strtok
- Oracle的redo 和undo的区别
- POJ 2388 Who's in the Middle
- 2. 论坛风格配色方案注解图(界面->风格管理->编辑)
- Python笔记
- ios视图层次结构
- C++之对象切割
- iso-开发基础知识-9-观察者模式
- oracle 数据库转换成mysql工具:ora2mysqcn
- android settings 添加 back 键响应 按back键退出
- C++ primer 课后习题
- oracle学习笔记(2)_Oracle 自带的客户端工具
- 去除 struts2 标签中的自动生成的布局样式table/tr/td
- cocos2d cocos2d-x 使用自定义字体
- 在64位oracle服务器上使用32位oracle客户端