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; } };

六、实践建议

  1. 设计原则:优先使用组合而非继承,遵循单一职责原则

  2. 内存管理:使用智能指针(如std::shared_ptr)避免内存泄漏

  3. 模板应用:结合模板实现泛型编程

  4. STL使用:熟练运用标准模板库中的容器和算法

扩展学习:深入理解RAII资源获取即初始化、移动语义、lambda表达式等现代C++特性,这些是构建高效面向对象程序的关键。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐