「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」
一、类的作用域
C/C++ 里 {} 定义起来的就是域,就像之前的命名空间域。 这里类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。
class Person
{
public:
void PrintPersonInfo();
private:
char _name[20];
char _gender[3];
int _age;
};
//这里需要指定PrintPersonInfo是属于Person这个类域
void Person::PrintPersonInfo()
{
cout<<_name<<" "_gender<<" "<<_age<<endl;
}
❓ struct 和 class 在 C++ 中的使用规范 ❔
一般情况下定义类都要使用class,如果全部成员都需要是公有就使用struct。
二、类的实例化
❓ 成员变量/函数的声明和定义 ❔
📝 说明:
对于成员函数声明是 void Init () ; 定义是 void Queue : : Init () { } ...
对于成员变量声明是 QueueNode* head ; 定义是 Queue q; ...
声明和定义就像借钱,你跟朋友说下午要借你 100 元,朋友承诺了没问题 —— 这就是声明;下午,叮 。。。支付宝收款 100 元,朋友落实了承诺 —— 这就是定义。
再看上图,声明就是告诉你变量的类型、名称,但是还没有开空间;定义就是实例化对象开空间了。
如果 Queue.h 里初始化 ➡ QueueNode* head = nullptr ; ❓
这里是缺省值,并不是定义,它依然还是声明 (这里以后学到构造函数会证明)。变量的定义是指开空间,跟是否初始化没关系。关于这里的缺省值是 C++11 的语法,后面再详讲。
❗ 用类类型创建对象的过程,称为类的实例化,一个类可以实例化出多个对象 ❕
1️⃣ 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它。
2️⃣ 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。
3️⃣ 打个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。