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

C++面向对象编程(视频教程)

概述

  • C++ 面向对象编程(OOP)是一种以对象为中心的编程范式,它将数据和操作数据的方法封装在一起,通过类和对象来组织代码。
  • 视频教程:https://pan.quark.cn/s/41d99910ce32

1. 类(Class)与对象(Object)

  • :是一种用户自定义的数据类型,包含数据成员(属性)和成员函数(方法),用于描述一类事物的共同特征和行为。
  • 对象:是类的实例,通过类创建,拥有类定义的属性和方法。
// 类的定义
class Person {
private:// 私有数据成员(只能在类内部访问)string name;int age;public:// 公有成员函数(类外部可访问)void setInfo(string n, int a) {name = n;age = a;}void display() {cout << "Name: " << name << ", Age: " << age << endl;}
};// 创建对象并使用
int main() {Person p1;  // 创建Person类的对象p1p1.setInfo("Alice", 25);p1.display();return 0;
}

2. 封装(Encapsulation)

  • 将数据和操作数据的方法捆绑在一起,隐藏对象的内部实现细节,只通过公共接口与对象交互。
  • 通过访问控制符实现:private(私有,仅类内访问)、public(公有,任何地方可访问)、protected(保护,类内和派生类可访问)。

3. 继承(Inheritance)

  • 允许一个类(派生类)继承另一个类(基类)的属性和方法,实现代码复用和层次化设计。
  • 派生类可以添加新成员或重写基类方法。
// 基类
class Animal {
public:void eat() {cout << "Animal is eating" << endl;}
};// 派生类,继承自Animal
class Dog : public Animal {
public:void bark() {cout << "Dog is barking" << endl;}
};int main() {Dog dog;dog.eat();  // 继承基类的方法dog.bark(); // 派生类自己的方法return 0;
}

4. 多态(Polymorphism)

  • 同一操作作用于不同对象,产生不同的行为。
  • 分为编译时多态(函数重载、运算符重载)和运行时多态(虚函数与动态绑定)。
class Shape {
public:// 虚函数,允许派生类重写virtual void draw() {cout << "Drawing a shape" << endl;}
};class Circle : public Shape {
public:// 重写基类的虚函数void draw() override {cout << "Drawing a circle" << endl;}
};class Square : public Shape {
public:void draw() override {cout << "Drawing a square" << endl;}
};int main() {Shape* shape1 = new Circle();Shape* shape2 = new Square();shape1->draw();  // 调用Circle的draw()shape2->draw();  // 调用Square的draw()delete shape1;delete shape2;return 0;
}

5. 其他重要概念

  • 构造函数:用于对象初始化的特殊成员函数,与类同名,无返回值。
  • 析构函数:对象销毁时自动调用的特殊成员函数,用于释放资源,格式为 ~类名()
  • 友元函数/类:允许外部函数或类访问类的私有成员,但会破坏封装性,谨慎使用。
  • 抽象类:包含纯虚函数(virtual void func() = 0;)的类,不能实例化,只能作为基类。

面向对象编程的优势

  • 代码复用性高(通过继承)
  • 模块化和可维护性好(通过封装)
  • 扩展性强(通过多态和继承)
  • 更符合人类对现实世界的认知方式

C++ 的面向对象特性使其非常适合开发大型、复杂的软件系统,如游戏引擎、操作系统等。


文章转载自:

http://wjeAmkTD.Lpskm.cn
http://P51pEEkA.Lpskm.cn
http://boFcwUGd.Lpskm.cn
http://yNvOU8wr.Lpskm.cn
http://oJKUDrk5.Lpskm.cn
http://qA78ywhc.Lpskm.cn
http://EL3trjkG.Lpskm.cn
http://VBU6k2k1.Lpskm.cn
http://1VDSJYWH.Lpskm.cn
http://Jh7OulSM.Lpskm.cn
http://KoEXk5x6.Lpskm.cn
http://8MgqTa9Q.Lpskm.cn
http://7CxtgVoO.Lpskm.cn
http://hEA4ZMAu.Lpskm.cn
http://NCvdzufm.Lpskm.cn
http://JsjNWEEv.Lpskm.cn
http://XTUByNJx.Lpskm.cn
http://m1kfGa4J.Lpskm.cn
http://S04hHLp5.Lpskm.cn
http://J1FJUe87.Lpskm.cn
http://wtyaxWFa.Lpskm.cn
http://fHmyscSx.Lpskm.cn
http://o4M8JEgx.Lpskm.cn
http://tCSpuTCT.Lpskm.cn
http://ftp1tc1b.Lpskm.cn
http://upNFidbV.Lpskm.cn
http://WmLz9VtQ.Lpskm.cn
http://wUFi6NwC.Lpskm.cn
http://Qbr3aZOZ.Lpskm.cn
http://EsVLlApI.Lpskm.cn
http://www.dtcms.com/a/371903.html

相关文章:

  • 自然语言处理之PyTorch实现词袋CBOW模型
  • Oracle到金仓数据库信创改造迁移实施规划方案(下篇)
  • 707, 设计链表, LinkedList, 单链表, Dummy Head, C++
  • 算法:哈希表
  • Onecode 可视化动作揭秘系列二:组件类型个性化配置技术协议
  • 前端:JavaScript基础
  • 知识扩展——探究当代分布式数据库
  • 性能剖析工具火焰图介绍与实战demo
  • Linux:malloc背后的实现细节
  • Windows HDR 和 Nvidia HDR 关系
  • HarmonyOS应用开发:三层工程架构
  • Python学习——安装配置python环境+入门
  • IP校验和算法:从网络协议到SIMD深度优化
  • CentOS7 Hive2.3.8 安装图文教程
  • 如何利用 ChatGPT 辅助写作
  • 《从iptables到ipvs:云原生网络转发的性能拐点突破》
  • centos系统apache支持php配置
  • PyQt数字转大写金额GUI工具开发及财务规范实现
  • 家长沉迷游戏刷剧对儿童学习体验的影响:儿童教育心理学视角分析
  • 环状肽药物发现新路径:DNA 编码文库技术(DELT)的突破与挑战
  • 基于蚁群算法的量子电路调度研究(Matlab平台)
  • Photoshop图层间的关系
  • Axure RP 9 最新版安装包+安装步骤Win系统适用(附安装包)
  • 【PS2025全网最新版】稳定版PS2025保姆级下载安装详细图文教程(附安装包)(Adobe Photoshop)
  • FLINK:水位线的介绍
  • MySQL高级功能:窗口函数
  • 换手率及使用Python获取换手率数据
  • 炉米Lumi:字节跳动推出的AI图像模型分享社区
  • 计算机网络学习(六、应用层)
  • JavaSE 数组从入门到面试全解析