欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

1.1C++对象模式

时间:2023-04-28
C++对象模式

C++中有两种数据成员,static和nonstatic;以及三种成员函数:static,nonstatic,virtual

class Point {public: Point(float xvlal); virtual ~Point(); float x() const; static int PointCount();protected: virtual ostream& print(ostream &os) const; float _x; static int _point_count;};

一个object是一系列的slots,每个slot指向一个members,members按其声明顺序,各被制定一个slot。members本身并不放在object之中。只有指向member的指针才放在object内

表格驱动模型

另一种对象模型是把所有与members相关的信息抽出来,放在一个data member table和一个member function table之中,class object``本身则指向这两个表格的指针。membe function table是一系列的slots,每个slots,每个slot指出一个member function;Data member table则直接持有data本身;

C++对象模型

在此模型中,非静态数据成员被置于每个class object内,静态数据成员则被存放在个别class object之外。静态和非静态成员函数也被放在个别的class object之外。虚函数则以两个步骤支持

每个class产生出一堆指向虚函数的指针,放在表格之中,这个表格称为virtaual table每个class obect被安排一个指针,指向相关的virtual table
对象模型如何影响程序

不同的对象模型,会导致“现有的程序代码必须修改”以及“必须加入新的程序代码”

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。