当前位置: 首页 > article >正文

面向对象编程(OOP)基础:类与对象

1. 面向对象编程的基本理念

面向对象编程(OOP)是C++的核心特性之一,它通过“对象”和“类”两个基本概念,帮助开发者更好地组织代码,增强程序的可维护性与可扩展性。

在OOP中,程序的主要构建块是对象(object),而对象的模板就是类(class)。简单来说,类定义了对象的结构和行为,而对象则是类的实例。

2. 类的定义

类是对一类对象的抽象描述,包含了这些对象的属性(成员变量)和行为(成员函数)。类在C++中的定义一般包括以下几部分:

  • 类名:类的名称,通常遵循命名规则。
  • 成员变量:用于表示类的状态或属性。
  • 成员函数:定义对象能够执行的操作或行为。

类的基本结构

​
class ClassName {
private:
    // 成员变量:用于存储类的状态
    int memberVar;
    
public:
    // 构造函数:用于初始化对象
    ClassName(int value) : memberVar(value) {}
    
    // 成员函数:定义类的行为
    void setMemberVar(int value) {
        memberVar = value;
    }
    
    int getMemberVar() const {
        return memberVar;
    }
};

​
解释:
  • ClassName 是类的名称。
  • private 中的 memberVar 是成员变量,它在类的外部是不可访问的,属于私有成员。
  • public 中的成员函数则用于对类的外部提供接口,允许外部通过它们访问或修改 memberVar

3. 对象的创建

类的实例被称为对象。当我们定义一个类后,就可以通过类来创建对象。对象是类的一个具体实例,它拥有类中定义的所有成员变量和成员函数。

​
int main() {
    // 创建对象
    ClassName obj(5);
    
    // 通过成员函数访问成员变量
    std::cout << obj.getMemberVar() << std::endl;  // 输出 5
    
    // 修改成员变量
    obj.setMemberVar(10);
    std::cout << obj.getMemberVar() << std::endl;  // 输出 10
    
    return 0;
}

​
解释:
  • 通过 ClassName obj(5); 创建了一个对象 obj,并通过构造函数初始化 memberVar 为 5。
  • 然后我们通过 getMemberVar() 获取 memberVar 的值并输出,接着用 setMemberVar() 修改了它的值。

4. 构造函数与析构函数

4.1 构造函数

构造函数是特殊的成员函数,用于初始化对象。它在创建对象时自动调用,不能有返回值,且名称必须与类名相同。构造函数的作用是为对象的成员变量赋初值。

​
class ClassName {
private:
    int memberVar;
    
public:
    // 默认构造函数
    ClassName() : memberVar(0) {}
    
    // 带参构造函数
    ClassName(int value) : memberVar(value) {}
};

​

在上述例子中,ClassName() 是默认构造函数,当没有提供初始值时,会将 memberVar 初始化为 0ClassName(int value) 是带参构造函数,当创建对象时提供初始值时,memberVar 会被赋为指定的值。

4.2 析构函数

析构函数与构造函数相反,是在对象生命周期结束时自动调用的。它的作用是释放对象占用的资源。析构函数的名称必须以 ~ 开头,并且不接受任何参数,也没有返回值。

​
class ClassName {
public:
    // 析构函数
    ~ClassName() {
        std::cout << "对象销毁" << std::endl;
    }
};

​

ClassName 类型的对象超出作用域时,析构函数会自动执行,释放资源。

5. 访问控制与封装

C++ 类支持三种访问控制机制:public(公共)、private(私有)和 protected(受保护)。它们决定了类的成员在类外部能否被访问。

  • public 成员:可以被类的外部访问。
  • private 成员:只能在类的内部访问,外部不能直接访问。
  • protected 成员:可以在派生类中访问,但在类的外部无法访问。
​
class ClassName {
private:
    int privateVar;  // 只能在类内部访问
    
public:
    int publicVar;   // 可以在类外部访问
};

​

封装的关键是通过访问控制机制,保护对象的内部状态,只暴露必要的接口给外部,防止外部对对象状态的直接修改。

6. 类的成员初始化与默认值

类的成员变量可以在类定义时提供默认值,也可以通过构造函数来初始化。成员变量的默认值会在对象创建时自动赋予。

​
class ClassName {
private:
    int memberVar = 10;  // 默认值为 10
    
public:
    ClassName() = default;  // 使用默认构造函数
    void print() {
        std::cout << "memberVar: " << memberVar << std::endl;
    }
};

​

7. 小结

  • 类与对象 是面向对象编程的核心,类定义了对象的属性和行为,而对象则是类的实例。
  • 构造函数与析构函数 用于对象的初始化和销毁,帮助我们更好地管理资源。
  • 访问控制(public, private, protected)是实现封装的重要手段,它帮助我们控制类内部数据的可访问性。
  • 成员初始化 提供了初始化成员变量的便捷方式,可以在类定义时给成员变量赋予默认值。

这篇文章为大家介绍了面向对象编程的基本概念,尤其是类与对象的定义与使用,希望能够帮助读者理解C++中的面向对象思想,并为接下来的学习打下坚实的基础。如果你对面向对象编程有更多疑问,欢迎继续跟进后续内容,我们将深入探讨OOP中的其他特性,如继承、多态等。


http://www.kler.cn/a/526800.html

相关文章:

  • Transformer+vit原理分析
  • Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)
  • git push到远程仓库时无法推送大文件
  • 解锁微服务:五大进阶业务场景深度剖析
  • java——继承
  • STM32标准库移植RT-Thread nano
  • 线性回归简介:从理论到应用
  • 01. 计算机系统
  • C++ 中的引用(Reference)
  • 第十一章 F - H 开头的术语
  • 数据结构与算法之哈希表: LeetCode 1797. 设计一个验证系统 (Ts版)
  • 深入剖析 Docker 的镜像分层存储机制
  • jhat命令详解
  • 3.拼正方形python解法——2024年省赛蓝桥杯真题
  • 第28章 星骗计划的开篇
  • 25.Word:学生成绩管理系统【8】
  • plot(a_star_path(:, 1), a_star_path(:, 2), ‘r-‘, ‘LineWidth‘, 2);
  • 实验七 JSP内置对象II
  • 力扣【98. 验证二叉搜索树】Java题解(容易写错的题)
  • Java小白入门教程:内置数据类型(四类八种)和引用数据类型
  • Java知识速记:深拷贝与浅拷贝
  • 基于Python的药物相互作用预测模型AI构建与优化(下.代码部分)
  • LabVIEW透镜多参数自动检测系统
  • HTML DOM 修改 HTML 内容
  • SG算法解析
  • java_throw和throws的区别