本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下:
- 基础篇:类与对象(涉及C++的三大特性等);
- STL 篇:学习使用 C++ 提供的 STL 相关库;
- 高阶数据结构与算法篇: 手动实现自己的 STL 库 及 设计实现高阶数据结构,如 B树、B+树、红黑树等。
学习集:
本期内容:C++ 中 struct 结构体的认识【面试考点:C 与 C++ 中结构体的区别】
目录:
1. C++ 中的 struct 的认识
2. C++ 中的 struct 基本使用
3. C 与 C++ 中结构体的区别
【 C++学习合集链接 】
1. C++ 中的 struct 的特点
简而言之,C++ 中的 struct 可以兼容 C 语言的用法!同时有新增的特性!
C++ 中结构体内:
- 可以声明并初始化变量!
- 可以声明定义函数!
- 实例化时可以省略 struct 关键字!
- 成员访问方式与 C 语言相同!
- 结构体内同样有访问限制符,默认为:public(公有:即外部声明的变量可以直接通过成员访问的方式访问!)
- 可以包含静态成员。
补充:关于访问限制符的问题,在类中会说明,此处只需直到分为三种:
- public:公有属性(外部可以直接访问,一般成员函数都是公有的)
- protected:保护属性(外部不能直接访问)
- private:私有属性(外部不能直接访问)
- 访问限制是外部对结构体/类内部成员的访问限制,结构体/类内部无访问限制约束!
2. C++ 中的 struct 基本使用
如下使用 C++ struct 简单设计栈(不实现)
#include<iostream>
using std::cout;
using std::endl;
typedef int DataType;
struct Stack{
// 默认访问限制为:公有
// 定义成员变量
DataType* _stack;
size_t _capacity = 4; // 支持初始化变量
size_t _size = 0;
// 定义成员方法
void Init(){
...
}
void Push(const DataType& data){
...
}
...
};
int main(){
Stack stk; // 可以省略 struct 关键字
stk.Init();
return 0;
}
3. C 与 C++ 中结构体的区别
特性 | C++ | C 语言 |
---|---|---|
内部初始化变量 | 是 | 否 |
内部声明定义函数 | 是 | 否 |
外部访问限制 | 是 | 否 |
是否可继承 | 是 | 否 |
是否支持静态成员 | 是 | 否 |