《Inside the C++ Object Model》关于基类与派生类的Tips
来源:互联网 发布:曲线拟合算法 编辑:程序博客网 时间:2024/06/07 03:04
近来阅读《Inside the C++ Object Model》,里边讲到,在C++中多态只存于public class体系中,且只有通过pointer和reference来间接处理。
#include <iostream>using std::cout;using std::endl;class Base{public:virtual void printf(void){cout<< "Base printf"<< endl;}};class Derv : public Base{public:virtual void printf(void){cout<< "Derv printf"<< endl;}};int main(int argc, char** argv){Base* pBase = new Base();Derv* pDerv = new Derv();pBase = pDerv;pBase->printf();cout<<"-------------------------"<< endl;Base* pBase2 = new Derv();pBase2->printf();cout<<"-------------------------"<< endl;Base base;Derv derv;base = derv;base.printf();cout<<"-------------------------"<< endl;Derv derv2;Base &base2 = derv2;base2.printf();getchar();return 0;}
结果如下:
可见对象base并未调用派生类中的printf()函数,而是继续使用基类的函数。
不知在哪见过,调用printf()函数时,指向它的this指针属于谁,那么就调用谁的printf();具体内容待找到后补上。
例子:
#include <iostream>using std::cout;using std::endl;class Base{public:Base(): m_nData(1){}virtual void printf(void){cout<< m_nData<< endl;}private:int m_nData;};class Derv : public Base{public:Derv() : m_nData(2){}virtual void printf(void){cout<< m_nData<< endl;}private:int m_nData;};int main(int argc, char** argv){Base* pBase = new Base();Derv* pDerv = new Derv();pBase = pDerv;pBase->printf();cout<<"-------------------------"<< endl;Base* pBase2 = new Derv();pBase2->printf();cout<<"-------------------------"<< endl;Base base;Derv derv;base = derv;base.printf();cout<<"-------------------------"<< endl;Derv derv2;Base &base2 = derv2;base2.printf();getchar();return 0;}
结果如下:
- 《Inside the C++ Object Model》关于基类与派生类的Tips
- Inside The C++ Object Model
- Inside the C++ Object Model
- 《Inside the C++ Object Model》
- Inside The C++ Object Model
- Inside The C++ Object Model
- Inside The C++ Object Model
- inside the c++ object model
- Inside The C++ Object Model 学习笔记 -- 关于对象
- Inside The C++ Object Model(一)关于对象
- Inside The C++ Object Model 学习笔记 -- 关于对象
- Inside the C++ Object Model 第一讲: 关于对象
- 读书笔记《Inside the C++ Object Model》:关于对象
- Inside The C++ Object Model ---- Object Lessons
- 读Inside the C++ Object Model有感
- Inside The C++ Object Model 笔记
- 《Inside the C++ Object Model》拿到了
- Inside The C++ Object Model (一)
- springMVC入门
- jquery-ljbSelect-v1.0.js-2013-4-14
- MySQL字符集编码设置与PHP显示乱码的解决办法
- sql语句的执行步骤
- 学习C++模板元编程(1)
- 《Inside the C++ Object Model》关于基类与派生类的Tips
- hibernate主键生成策略
- 搜索引擎-处理查询
- 2013 Morgan Stanley 暑期实习生(IT) online test笔经
- Windows中的常用技巧
- STM32的RTC
- 整理一下,这些天我都崩溃了,怎样读取word
- 大端模式
- 大端小端模式