Python到C++: 函数与面向对象编程(OOP)
目录
函数与返回值
在 C++ 中,函数是程序中的基本单位。每个函数都拥有返回类型、函数名和参数列表,函数执行后返回相应的结果。
1.1 C++ 函数定义与返回值
示例:
1 | #include <iostream> |
解析:
- 返回类型:
int表示该函数返回一个整数。 - 函数定义:
add函数接收两个整数参数,计算它们的和并返回结果。 - 函数调用:在
main()函数中调用add,并将结果存储到result变量中。
1.2 函数传参方式
C++ 支持三种传递参数的方式:按值传递、按引用传递和按指针传递。
1.2.1 按值传递(传递副本)
函数接收参数的副本,修改副本不会影响原始数据。
1 | #include <iostream> |
1.2.2 按引用传递(传递地址)
通过引用传递参数,函数直接修改原始数据。
1 | #include <iostream> |
1.2.3 按指针传递(通过指针传递地址)
使用指针传递参数,函数通过指针修改数据。
1 | #include <iostream> |
2. 面向对象编程(OOP)
C++ 是一种支持面向对象编程(OOP)的语言,它通过封装、继承和多态来提供强大的结构化设计能力。
2.1 类与构造函数
C++ 中的类与 Python 类似,类成员包含数据和方法。构造函数用于初始化对象。
C++ 类与构造函数示例:
1 | #include <iostream> |
1 | // 输出 |
解析:
- 构造函数:
Person(string n, int a)初始化name和age成员。 - 析构函数:
~Person()是析构函数,当对象生命周期结束时自动调用,用于清理资源。 - 成员函数:
introduce输出对象的属性。
2.2 继承
继承是 OOP 的核心概念之一,它允许子类继承父类的成员函数和数据成员,从而实现代码复用。
C++ 继承示例:
1 | #include <iostream> |
1 | // 输出 |
解析:
- 基类
Animal:提供了speak()函数。 - 派生类
Dog:继承了Animal类并重写了speak()函数。 - 多态性:C++ 允许我们通过基类指针或引用调用派生类的方法,具体调用哪个版本的函数取决于对象的实际类型。
2.3 多态
多态是 C++ 中的一项强大特性,它允许同一个接口以不同的方式进行操作。
C++ 多态示例:
1 | #include <iostream> |
1 | // 输出 |
解析:
- 虚函数:基类中的
speak()被声明为virtual,这使得 C++ 能够根据对象的实际类型决定调用哪个函数。 - 动态绑定:通过基类指针
animalPtr指向Dog对象时,调用speak()会调用Dog类中的speak()函数。
注意
如果运行弹出警告如下:
1 | tem.cpp:13:18: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions] |
修复
What is a C++11 extension [-Wc++11-extensions]
https://stackoverflow.com/questions/45291142/what-is-a-c11-extension-wc11-extensions
如果使用Code Runner,添加配置如下:

如果是命令行运行,添加参数 -std=c++17
1 | g++ -std=c++17 tem.cpp -o tem |
3. 总结
在这篇文章中,我们探讨了 C++ 中函数的定义与返回值、参数传递方式、构造函数、析构函数、继承和多态等重要概念。C++ 提供了更高效和灵活的内存控制,使得它在性能要求较高的场合比 Python 更具优势。
C++ 的优势:
- 性能:C++ 提供直接的内存访问,适合对性能要求高的系统(如操作系统、游戏引擎等)。
- 底层控制:C++ 对内存管理有更细粒度的控制,允许开发者优化内存使用。
- 多态与继承:C++ 通过虚函数和继承提供强大的面向对象能力。
推荐阅读
作者:
胖胖不胖
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不止于python
感谢您的支持,我会继续努力!
微信支付
支付宝