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

02 面向对象

C++ 类与对象核心内容总结


一、基本概念

  1. 对象 (Object)
    • 定义:客观存在的实体(如一个人、一辆车)。

    • 组成:

    ◦ 属性(静态特征):通过数据成员描述(如年龄、职称)。

    ◦ 方法(动态行为):通过成员函数实现(如学习、教学)。

    • 特性:

    ◦ 唯一标识(名字)。

    ◦ 属性描述状态,方法定义行为。

    ◦ 封装性:属性和方法作为一个整体,通过操作接口使用。

  2. 类 (Class)
    • 定义:对象的抽象描述,是同类对象的“模板”。

    • 与对象关系:

    ◦ 类是抽象概念(如“教师类”),对象是具体实例(如“教师黎明”)。

    ◦ 实例化:通过类创建对象(类似“类型声明变量”)。


二、类的组成

  1. 成员类型
    • 数据成员:描述对象的属性(如 int age;)。

    • 成员函数:定义对象的行为(如 void Teach();)。

  2. 访问权限
    private(私有):仅类内成员函数可访问(默认权限)。

    public(公有):类内外均可访问。

    protected(保护):类内及派生类可访问。

  3. 类定义示例

    class Teacher {
    private:    // 私有成员(默认)int age;char* degree;
    public:     // 公有成员void Study(); int TellAge() { return age; }  // 内联函数
    protected:  // 保护成员char* title;
    };
    

三、类与结构体的区别

特性类 (class)结构体 (struct)
默认访问权限privatepublic
用途封装数据与操作简单数据集合

四、对象的定义与使用

  1. 对象定义

    Teacher LiMing;         // 局部对象
    Teacher *p = new Teacher; // 动态对象
    
  2. 访问成员
    • 通过对象:LiMing.TellAge();

    • 通过指针:p->Teach();

  3. 对象特性
    • 私有成员需通过公有方法访问(体现封装性):

    LiMing.age = 30;          // 错误!age 是私有成员
    int age = LiMing.TellAge(); // 正确:通过公有方法访问
    

五、成员函数的实现

  1. 类内定义

    class A {
    public:void Set(int a) { x = a; }  // 直接在类内实现
    };
    
  2. 类外定义

    class A {
    public:void Set(int a);  // 声明
    };
    void A::Set(int a) {  // 类外实现,需加类名限定x = a;
    }
    
  3. 函数重载与默认参数

    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;  // 嵌套类对象作为成员
};

七、关键特性

  1. 封装性
    • 数据与操作绑定,隐藏实现细节。

    • 通过访问控制(private/public)保护数据。

  2. 对象赋值
    • 同类型对象可直接整体赋值(包括私有成员):

    Teacher t1, t2;
    t2 = t1;  // 成员间逐值复制
    
  3. 动态内存与指针
    • 动态对象需手动管理内存:

    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)实现封装与保护。

• 面向对象的核心是通过类与对象组织代码,提高复用性与安全性。

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

相关文章:

  • Uniapp:showLoading(等待加载)
  • 在Spark集群中搭建Standalone
  • 【刷题Day29】Python/JAVA - 03(浅)
  • 一个结合了Deepseek-R1和V3能力的混合推理模型:DeepSeek-R1T-Chimera
  • 【Python Web开发】03-HTTP协议
  • Python 正则表达式 re 包
  • 1.文档搜索软件Everything 的使用介绍
  • pdf.js移动端预览PDF文件时,支持双指缩放
  • uniapp实现统一添加后端请求Header方法
  • .NET8配置组件
  • Google Earth Engine 中地形晕渲图(Hillshade)的实现与应用
  • Java SE(4)——方法详解
  • Rust 学习笔记:关于切片的两个练习题
  • 复现:Mamba-UNet:降水临近预报的创新解决方案
  • LBS服务(基于位置的服务)与LLM(大型语言模型)交互功能分析
  • Vue+Echarts 3D地图效果
  • 配置扩展ACL
  • 前端连接websocket服务报错 Unexpected response code: 301
  • GTC2025全球流量大会:领驭科技以AI云端之力,助力中国企业出海破浪前行
  • Typecho博客使用阿里云cdn和oss:handsome主题进阶版
  • Vue 中局部指令(directives)的用法详解
  • STM32 RTC配置
  • JavaScript 中的类(Class)语法
  • Vue 组件通信方式总览
  • OpenCV 图形API(70)图像与通道拼接函数-----创建一个图像或矩阵(GMat)的副本的操作函数copy()
  • Maven多模块工程版本管理:flatten-maven-plugin扁平化POM
  • 打火机检测数据集VOC+YOLO格式925张1类别
  • 使用POI和EasyExcel使用导入
  • 实战指南:搭建AIRIOT全场景智慧养老管理平台系统全流程解析
  • 2025系统架构师---基于规则的系统架构风格‌