A a;
B b;//B类是A类的子类
a=b;//B的内容被A类对象进行裁剪,a仍然属于A类
a.func();//调用的是A的函数
必须用引用和指针,上述因为是在编译时就确定好了,所以调用的仍然是父类.
A &a=b;
a.func();//这样可以
对多态的支持
1、类型的隐含转化
circle作为shap的子类
shap *ps=new circle();
2、经由虚函数机制
ps->rotate();
3、dnnamic和typeid
if (circle *pc=dynamic_cast(ps))
多态接口的定义
通常定义在一个抽象的基类中的接口由虚函数支持。
可以程序执行期决定哪个类执行。
比如
func(
A a, const A *a1,const A&a2
)
{
a.func();//这句因是编译期决定的,所以永远是调用A类的函数,下面2句在下述程序中是调用B类的
(*a1).func();
(*a2.func);
}
main()
{B b;//B是A的子类
func(b,&b,b)
}
如此说来类对象要多少空间来表示呢
1、非静态数据成员的空间
2、为支持VIRTUAL而产生的如虚函数表及其指针等所需要的空间
3、由于成员存放的边界需要而产生的边界空间。
4、指针无论指向什么类型,其空间大小都是一样的,只是类型不同,其指向的地址所代表内容的长度不同而已
指向对象的指针
B b;//b是a的子类,且B比A多定义几个非静态成员
A*a=&b;//指针指向的空间仅包括A类对象的空间大小,不包括B类的几个非静态成员所在的空间,尽管
//已经指向了B类的空间,不能使用a来操作B类对象所特有的东东
B *bb=&b;//包括B类对象所占用的空间。
//以下方法可以使用B类对象的空间
((B*)a)->x;//x是B类的int型的数据成员
分享到:
相关推荐
这本书的目标是帮助读者理解C++对象模型背后的细节,包括内存管理、类型系统、对象生命周期、继承、多态等核心概念。 C++对象模型是C++编程的基础,它描述了如何在内存中表示类和对象,以及它们之间的关系。首先,...
在实际开发中,合理利用C++对象模型的特性,如继承、多态和动态内存管理,可以使代码更加模块化、可维护和可扩展。同时,注意遵循最佳实践,如RAII(资源获取即初始化)原则,可以有效减少内存泄漏和资源管理错误。 ...
《深度探索C++对象模型》是一本专门为C++程序员量身打造的专业书籍,它深入剖析了C++语言的核心——对象模型。这本书旨在帮助开发者更好地理解C++中的内存管理、类型系统、类层次结构以及对象生命周期等关键概念。...
在探索C++对象模型之前,首先需要理解对象模型(Object Model)的含义。对象模型是面向对象编程(Object-Oriented Programming,OOP)中的一个核心概念,它描述了对象的结构、属性、方法、以及对象之间的关系。C++...
C++对象模型是C++语言的核心,它涉及到内存管理、类结构、对象生命周期、继承、多态等关键概念。在《Inside The C++ Object Model》这本书中,作者深入浅出地解析了这些概念,让读者能了解C++编译器如何将源代码转化...
《深度探索C++对象模型》是一本面向有C语言基础的读者,旨在深入解析C++这一强大编程语言中关于对象模型的专著。C++作为面向对象编程的典范,其对象模型是理解语言特性和底层机制的关键。这本书的中文清晰版提供了一...
C++对象模型 第1章 关于对象 第2章 构造函数语意学 第3章 Data语意学 第4章 Function语意学 第5章 构造、析构、拷贝语意学 第6章 执行期语意学 第7章 站在对象模型的尖端 第8章 C++对象模型总结 8.1 C++对象模型 8.2...
C++ 对象内存模型 C++ 对象内存模型是 C++ 编程语言中一个重要的概念, 它描述了 C++ 对象在内存中的存储结构。这个模型是 C++ 编程语言的基础之一,对于理解 C++ 编程语言的工作机理具有重要的意义。 在 C++ 中,...
本文深入探讨C++对象模型的各个方面,希望能够帮助程序员更好地理解和利用C++的特性。 C++的类继承内存布局是理解C++对象模型的基础。在单继承情况下,派生类对象会包含基类的成员变量和成员函数,这就像是在基类的...
深度探索C++对象模型 第0章 导读(译者的话) 第1章 关于对象(Object Lessons) 加上封装后的布局成本(Layout Costs for Adding Encapsulation) 1.1 C++模式模式(The C++ Object Model) 简单对象模型(A Simple...
1. **C++对象模型**:C++对象模型是C++编程的基础,它描述了在C++程序中类和对象是如何在内存中存储和交互的。对象模型包括对象的生命周期、成员变量的布局、虚函数表、构造与析构过程、静态成员等内容。理解这一...
《深度探索C++对象模型》这本书,由Stanley B. Lippman撰写,侯捷翻译,由华中科技大学出版社出版。本书致力于深入解析C++编译器在处理C++代码时所采取的复杂对象模型及其背后的底层机制,特别是针对构造函数、解构...
《深度探索C++对象模型》一书,正如其标题所示,深入探讨了C++语言中的对象模型,这对于理解和掌握C++的高级特性至关重要。在C++编程中,对象模型是理解类、对象、继承和多态等核心概念的基础。下面,我们将基于这...
C++对象模型是C++语言的基础,它涉及到类、对象、继承、多态、内存管理等核心概念的实现细节。这本书的中英文版本为读者提供了丰富的学习资源,无论你是初级程序员还是经验丰富的开发者,都能从中获益匪浅。 1. **...
这本书详细揭示了C++对象模型的内部工作原理,深入剖析了C++语言底层的实现机制,包括类、对象、继承、多态、模板等核心概念在内存中的表示方式。以下是对该书涵盖的一些关键知识点的详细解释: 1. **对象与类**:...
《深度探索C++对象模型》是一本面向C++高级开发者的经典著作,旨在揭示C++对象模型的内在机制和工作原理。这本书详细介绍了C++语言底层的实现细节,包括类、对象、继承、多态等核心概念在内存中的表示方式,以及...