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

c++中的类有关概念

在 C++ 中,类(Class) 是面向对象编程(OOP)的核心概念,用于封装数据和行为。以下是关于类的主要概念和用法:


1. 类的基本结构

  • 定义类:使用 classstruct 关键字(class 默认成员为 privatestruct 默认成员为 public)。
    class MyClass {
    public:// 公有成员(外部可访问)void publicMethod();private:// 私有成员(仅类内可访问)int privateData;
    };
    

2. 成员变量和成员函数

  • 成员变量:类内部定义的变量,表示对象的状态。
  • 成员函数:类内部定义的函数,表示对象的行为。
    class Circle {
    public:double radius;double getArea() {return 3.14 * radius * radius;}
    };
    

3. 访问控制

  • public:类外可直接访问。
  • private:仅类内或友元(friend)可访问。
  • protected:类内、派生类或友元可访问。
    class Example {
    public:int a;       // 公有
    private:int b;       // 私有
    protected:int c;      // 保护
    };
    

4. 构造函数与析构函数

  • 构造函数:初始化对象,与类同名,无返回值。
    • 默认构造函数:无参数或参数有默认值。
    • 拷贝构造函数:用同类对象初始化(如 MyClass(const MyClass& other))。
    • 移动构造函数(C++11):用于资源转移(如 MyClass(MyClass&& other))。
  • 析构函数:释放资源,以 ~ 开头,无参数。
    class Person {
    public:Person() { /* 默认构造 */ }Person(const Person& other) { /* 拷贝构造 */ }~Person() { /* 析构 */ }
    };
    

5. 静态成员

  • 静态成员变量:属于类本身,所有对象共享。
  • 静态成员函数:只能访问静态成员,无 this 指针。
    class Counter {
    public:static int count;  // 静态变量声明static void increment() { count++; }
    };
    int Counter::count = 0; // 静态变量定义
    

6. 继承

  • 基类(父类)派生类(子类),支持代码复用。
  • 继承方式publicprotectedprivate
    class Animal { /* 基类 */ };
    class Dog : public Animal { /* 派生类 */ };
    

7. 多态与虚函数

  • 虚函数(Virtual Function):允许派生类覆盖基类实现。
    class Shape {
    public:virtual void draw() { /* 基类实现 */ }
    };
    class Circle : public Shape {
    public:void draw() override { /* 派生类实现 */ }
    };
    
  • 纯虚函数:定义抽象类(不能实例化)。
    class AbstractClass {
    public:virtual void pureVirtual() = 0; // 纯虚函数
    };
    

8. 友元(Friend)

  • 友元函数/类:允许非成员函数或类访问私有成员。
    class MyClass {
    private:int secret;friend void friendFunction(MyClass& obj); // 友元函数
    };
    void friendFunction(MyClass& obj) {obj.secret = 42; // 可直接访问私有成员
    }
    

9. 运算符重载

  • 重载运算符(如 +, ==)以支持自定义类型操作。
    class Vector {
    public:Vector operator+(const Vector& other) {// 实现向量加法}
    };
    

10. this 指针

  • 指向当前对象的指针,用于成员函数内部访问自身成员。
    class MyClass {
    public:void setValue(int value) {this->value = value; // 明确指向当前对象的成员}
    private:int value;
    };
    

11. 嵌套类

  • 在类内部定义的类,通常用于实现细节。
    class Outer {
    public:class Inner { /* 嵌套类 */ };
    };
    

12. 移动语义(C++11)

  • 移动构造函数移动赋值运算符:高效转移资源(如动态内存)。
    class MyString {
    public:MyString(MyString&& other) { /* 移动资源 */ }
    };
    

总结

类在 C++ 中通过 封装继承多态 实现面向对象设计。合理使用构造函数、访问控制、虚函数等特性,可以构建高效、可维护的代码结构。


练一练:

在这里插入图片描述
答案 D

http://www.xdnf.cn/news/529.html

相关文章:

  • 精益数据分析(6/126):深入理解精益分析的核心要点
  • 五分钟学会如何基本使用JJWT!!!
  • Java虚拟机面试题:垃圾收集(下)
  • 3.基础开发工具
  • CLIP赋能视频分析:时空侧网络调优,行人属性识别效率革命
  • Java—— 常见API介绍 第二期
  • C++/Python实现RGB和HSI相互转换
  • Linux——firewalld防火墙(笔记)
  • 深度学习语音识别
  • bat脚本转换为EXE应用程序文件
  • 案例驱动的 IT 团队管理:创新与突破之路:第六章 组织进化:从案例沉淀到管理体系-6.1 案例库建设方法论-6.1.2案例分级与标签体系
  • OpenStack Yoga版安装笔记(23)Swift安装
  • QML中的3D功能--模型导入与修改
  • LRU Java实现
  • 五、小白如何用Pygame制作一款跑酷类游戏(主角跳跃和滑行动作的实现)
  • Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT
  • 015-C语言字符函数和字符串函数
  • java蓝桥杯b组
  • 大模型Rag - 两大检索技术
  • 【滑动窗口】最⼤连续 1 的个数 III(medium)
  • 【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 大数据平台简介
  • 掌握 MySQL:从命令行操作到数据类型与字段管理
  • 论文阅读:2025 arxiv AI Alignment: A Comprehensive Survey
  • Zookeeper的通知机制是什么?
  • 【更新完毕】2025妈妈杯C题 mathercup数学建模挑战赛C题数学建模思路代码文章教学:音频文件的高质量读写与去噪优化
  • xilinx fpga中pll与mmcm的区别
  • 【DT】USB通讯失败记录
  • MySQL 全局锁:全量备份数据要怎么操作?
  • 04_银行个贷系统下的技术原理解析