核心要点总结:
1. C语言与C++中struct
的区别
- 名称不同
- C语言:称为“结构体”,仅用于封装数据。
- C++:称为“类”,支持成员函数和访问控制。
- 数据成员范围
- C语言:只能包含栈空间变量。
- C++:可包含栈空间变量、静态存储区变量、成员函数。
- 访问权限
- C语言:无访问控制。
- C++:支持
public
、protected
、private
三种权限。
2. C++中的类
class
与struct
的区别struct
默认所有成员为public
。class
默认所有成员为private
。
- 规范建议
- 成员变量应设为私有,成员函数应设为公有。
3. 构造函数
- 特点
- 对象创建时自动调用,无返回值,函数名与类名相同。
- 若未手动定义,编译器生成默认无参构造函数。
- 调用形式
- 显式调用:
Stu zs;
或Stu zs(参数);
。 - 隐式调用:
Stu zs = 100;
或Stu zs = {参数};
。
- 显式调用:
- 隐式调用限制
- 使用
explicit
关键字禁止隐式转换(如explicit Stu(int _score);
)。
- 使用
- 列表初始化
- 在构造函数后通过
: 成员变量(值)
初始化,尤其用于引用成员。
- 在构造函数后通过
4. 接口
- 作用
- 提供外部访问私有成员的通道。
- 分类
set
接口:修改私有成员。get
接口:获取私有成员。
5. this
指针
- 本质
- 成员函数调用时隐式传入的指针,指向当前对象(类型为
类名* const
)。
- 成员函数调用时隐式传入的指针,指向当前对象(类型为
const
成员函数- 使用
const
修饰(如int getScore() const;
),使this
变为const 类名*
,禁止修改成员变量。
- 使用
6. 析构函数
- 特点
- 对象生命周期结束时自动调用,函数名为
~类名()
。 - 手动调用析构函数不会跳过自动调用,需谨慎使用。
- 对象生命周期结束时自动调用,函数名为
- 用途
- 释放资源(如关闭文件、释放内存)。
7. 关键注意事项
- 类中的引用成员
- 必须在构造函数的列表初始化中初始化。
- 指针成员的
get
接口- 返回值应为
const 类型*
,防止外部直接修改私有数据。
- 返回值应为