02 面向对象
C++ 类与对象核心内容总结
一、基本概念
-
对象 (Object)
• 定义:客观存在的实体(如一个人、一辆车)。• 组成:
◦ 属性(静态特征):通过数据成员描述(如年龄、职称)。
◦ 方法(动态行为):通过成员函数实现(如学习、教学)。
• 特性:
◦ 唯一标识(名字)。
◦ 属性描述状态,方法定义行为。
◦ 封装性:属性和方法作为一个整体,通过操作接口使用。
-
类 (Class)
• 定义:对象的抽象描述,是同类对象的“模板”。• 与对象关系:
◦ 类是抽象概念(如“教师类”),对象是具体实例(如“教师黎明”)。
◦ 实例化:通过类创建对象(类似“类型声明变量”)。
二、类的组成
-
成员类型
• 数据成员:描述对象的属性(如int age;
)。• 成员函数:定义对象的行为(如
void Teach();
)。 -
访问权限
•private
(私有):仅类内成员函数可访问(默认权限)。•
public
(公有):类内外均可访问。•
protected
(保护):类内及派生类可访问。 -
类定义示例
class Teacher { private: // 私有成员(默认)int age;char* degree; public: // 公有成员void Study(); int TellAge() { return age; } // 内联函数 protected: // 保护成员char* title; };
三、类与结构体的区别
特性 | 类 (class ) | 结构体 (struct ) |
---|---|---|
默认访问权限 | private | public |
用途 | 封装数据与操作 | 简单数据集合 |
四、对象的定义与使用
-
对象定义
Teacher LiMing; // 局部对象 Teacher *p = new Teacher; // 动态对象
-
访问成员
• 通过对象:LiMing.TellAge();
• 通过指针:
p->Teach();
-
对象特性
• 私有成员需通过公有方法访问(体现封装性):LiMing.age = 30; // 错误!age 是私有成员 int age = LiMing.TellAge(); // 正确:通过公有方法访问
五、成员函数的实现
-
类内定义
class A { public:void Set(int a) { x = a; } // 直接在类内实现 };
-
类外定义
class A { public:void Set(int a); // 声明 }; void A::Set(int a) { // 类外实现,需加类名限定x = a; }
-
函数重载与默认参数
class Calculator { public:int Add(int a, int b);double Add(double a, double b); // 重载void Set(int a, int b = 0); // 默认参数 };
六、嵌套类
• 定义:在类内部定义另一个类。
class Outer {
public:class Inner { // 嵌套类public:void Display();};Inner obj; // 嵌套类对象作为成员
};
七、关键特性
-
封装性
• 数据与操作绑定,隐藏实现细节。• 通过访问控制(
private/public
)保护数据。 -
对象赋值
• 同类型对象可直接整体赋值(包括私有成员):Teacher t1, t2; t2 = t1; // 成员间逐值复制
-
动态内存与指针
• 动态对象需手动管理内存:Teacher *p = new Teacher(); delete p; // 释放内存
八、应用示例
class Student {
private:char name[20];float math, chinese;
public:void SetName(char* n) { strcpy(name, n); }void SetScores(float m, float c) { math = m; chinese = c; }float Average() { return (math + chinese) / 2; }
};int main() {Student stu;stu.SetName("Alice");stu.SetScores(90, 85);cout << "Average: " << stu.Average(); // 输出 87.5return 0;
}
九、总结
• 类是对象的蓝图,定义数据与操作的封装。
• 对象是类的实例,通过成员函数操作私有数据。
• 访问控制(private/public/protected
)实现封装与保护。
• 面向对象的核心是通过类与对象组织代码,提高复用性与安全性。