C++基础:类和对象入门
C++基础:类和对象入门指南
一、面向对象编程核心概念
1. 面向对象三大特性
-
封装:将数据与操作数据的方法绑定,隐藏内部实现细节
-
继承:通过派生类扩展基类功能,实现代码复用
-
多态:同一接口不同实现,通过虚函数实现动态绑定
2. 类与对象的关系
-
类:抽象数据类型模板,包含数据成员和成员函数
-
对象:类的实例化实体,占用内存空间
二、类的定义与实现
1. 基本结构
class 类名 { // 访问权限说明符 public: // 公有成员变量/函数 protected: // 保护成员变量/函数 private: // 私有成员变量/函数 };
2. 成员函数实现方式
-
内联函数:在类内声明时添加
inline关键字 -
分离式定义:在类外使用
类名::限定符定义
class Rectangle { private: double width; double height; public: // 内联函数 inline double getArea() { return width * height; } // 分离式定义 void setDimensions(double w, double h); }; // 分离式实现 void Rectangle::setDimensions(double w, double h) { width = w; height = h; }
三、对象创建与使用
1. 对象声明与初始化
// 默认构造函数 Rectangle rect1; // 调用默认构造函数 // 带参数构造函数 Rectangle rect2(5.0, 10.0); // 调用构造函数 // 使用成员函数 rect2.setDimensions(7.5, 12.5); double area = rect2.getArea();
2. 构造函数与析构函数
-
构造函数:初始化对象,与类同名,无返回类型
-
析构函数:对象销毁时调用,名称前加波浪号
~
class Circle { private: double radius; public: Circle(double r = 1.0) : radius(r) {} // 带默认值的构造函数 ~Circle() { cout << "Circle被销毁" << endl; } };
四、访问控制与封装
1. 访问权限说明符
|
访问权限 |
类内 |
派生类 |
类外 |
|---|---|---|---|
|
public |
√ |
√ |
√ |
|
protected |
√ |
√ |
× |
|
private |
√ |
× |
× |
2. 封装实践
class BankAccount { private: double balance; void updateBalance(double amount) { balance += amount; } public: BankAccount(double initial = 0) : balance(initial) {} void deposit(double amount) { updateBalance(amount); } void withdraw(double amount) { if (amount > balance) { cout << "余额不足" << endl; return; } updateBalance(-amount); } double getBalance() const { return balance; } };
五、继承与多态基础
1. 继承语法
class 派生类 : 访问权限 基类 { // 派生类成员 }; // 示例 class Animal { public: virtual void speak() { cout << "动物叫声" << endl; } }; class Dog : public Animal { public: void speak() override { cout << "汪汪" << endl; } };
2. 多态实现
-
虚函数:基类中使用
virtual声明,派生类中可重写 -
纯虚函数:在基类中声明为
= 0,强制派生类实现
class Shape { public: virtual double area() = 0; // 纯虚函数 }; class Circle : public Shape { private: double radius; public: Circle(double r) : radius(r) {} double area() override { return 3.14 * radius * radius; } };
六、实践建议
-
设计原则:优先使用组合而非继承,遵循单一职责原则
-
内存管理:使用智能指针(如
std::shared_ptr)避免内存泄漏 -
模板应用:结合模板实现泛型编程
-
STL使用:熟练运用标准模板库中的容器和算法
扩展学习:深入理解RAII资源获取即初始化、移动语义、lambda表达式等现代C++特性,这些是构建高效面向对象程序的关键。
更多推荐



所有评论(0)