行业知识
C++奇迹之旅:探索类对象模型内存的存储猜想
2026-11-07 21:32:52
来源:互联网转载
文章目录
- 前言
- 类的实例化
- 类对象模型
- 如何计算类对象的大小
- 类对象的存储方式猜想
- 猜想一:对象中包含类的各个成员
- 猜想二:代码只保存一份,在对象中保存存放代码的地址
- 猜想三:只保存成员变量,成员函数存放在公共的代码段
- 类中什么都没有---空类
- 类中仅有成员函数
- 类中既有成员变量,又有成员函数
- 总结
前言
上回我们学习了类的定义,初步了解了什么是类?类的定义,以及类的三个访问限定符:public,private,protected,本小节将讲解类的实例化,类对象模型的猜想存储,及三种简单类的计算。
类的实例化
在 C++ 中,类的实例化是指创建一个类的对象。当我们定义了一个类之后,就可以根据这个类创建出多个对象。这个过程就称为类的实例化。
- 实例化一个类的语法是:
ClassName objectName;
首先,假设我们定义了一个 Person 类:
- 类的声明:
- 我们定义了一个 Person 类,包含了两个数据成员 name 和 age,以及一个成员函数 introduce()。
- 在类的声明阶段,并没有为 Person 类分配任何内存空间。
// 类的声明#include using namespace std;class Person {public: std::string name; int age; void introduce() ;};-
类的定义:
- 我们还需要定义 introduce() 函数的具体实现:
void Person::introduce() { std::cout Person p1; p1.name = "Asen"; p1.age = 18; p1.introduce(); return 0;} Person._age = 100; // 编译失败:error C2059: 语法错误:“.” return 0;}public: std::string name; int age; void introduce();};//类的函数定义void Person::introduce(){ std::cout cout public:void Init(char c1, char c2, int i){_c1 = c1;_c2 = c2;_i = i;}void Print(){cout cout public:void Init(char c1, char c2, int i){_c1 = c1;_c2 = c2;_i = i;}void Print(){cout char a = 'A';char b = 'B';calculate cule1;cule1._i;calculate cule2;cule2._i;cule1.Init(a, b, 1)cule2.Init(a, b, 2);cout };public:void f2() {}};public:void f1() {}private:int _a;};
- 我们还需要定义 introduce() 函数的具体实现:
- 类的声明:
- 实例化一个类的语法是:
上一篇:服务器怎么分辨国内国外?
下一篇:怎么浮动图层?