💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 一.类的声明 1. 定义一个类的语法格式 ```c++ class NAME { //数据和成员函数 };//注意末尾的分号 ``` 2. 通常做法是将类声明和成员函数定义分开。 ## 二.对象的定义 1. 先声明类类型,再定义对象 ```c++ class Student { int id; string name; }; Student a,b; ``` 2. 声明类同时定义对象 ```c++ class Student { int id; string name; } a,b; ``` 3. 不出现类名,直接定义对象 ```c++ class { int id; string name; } a,b; ``` 4. 定义无名对象 ```c++ 类名(构造函数参数表); ``` ## 三.对象成员的访问 1. `对象.成员名` 2. `对象指针->成员名` 3. `(*对象指针).成员名` ## 四.成员函数 1. **与一般函数的区别** 只属于一个类。 2. 类型 + 在类中定义的成员函数 + 默认为内联函数 + 在类外定义的成员函数 + 需要加上作用域运算符 3. **存储方式** **成员函数被该类所有对象共享** 每个对象占用的存储空间只是该对象的数据部分占用的存储空间,而不包括成员函数代码占用的存储空间。 4. **调用方式** 成员函数调用时,接受了一个对象本身的地址,用 this 获取。 ## 五.结构体、联合体与类的区别 ### 1.类 class + 默认的成员访问权限为 `private`。 + 默认的继承方式为 `private`。 ### 2.结构体 struct + 默认的成员访问权限为 `public`。 + 默认的继承方式为 `public`。 ### 3.[$]联合体 union + 默认的成员访问权限为 `public`。 + 不能有基类,不能有虚函数。 + 在任意时刻,只有一个数据成员有值。 + 不允许有引用类型成员。 + [11-]不允许数据成员有用户定义的特殊成员函数。 [11+]如果数据成员有用户定义的特殊成员函数,且联合体没有用户定义的特殊成员函数,则编译器会将联合体中,相应的特殊成员函数声明为删除的。