Python到C++: 函数与面向对象编程(OOP)
函数与返回值在 C 中函数是程序中的基本单位。每个函数都拥有返回类型、函数名和参数列表函数执行后返回相应的结果。1.1 C 函数定义与返回值示例代码语言javascriptAI代码解释#include iostream using namespace std; // 定义一个简单的函数返回两个数的和 int add(int a, int b) { return a b; // 返回两数之和 } int main() { int result add(10, 20); // 调用 add 函数 cout Sum: result endl; return 0; }解析•返回类型int表示该函数返回一个整数。•函数定义add函数接收两个整数参数计算它们的和并返回结果。•函数调用在main()函数中调用add并将结果存储到result变量中。1.2 函数传参方式C 支持三种传递参数的方式按值传递、按引用传递和按指针传递。1.2.1 按值传递传递副本函数接收参数的副本修改副本不会影响原始数据。代码语言javascriptAI代码解释#include iostream using namespace std; void addValue(int x) { x 10; // 修改副本 } int main() { int a 5; addValue(a); // 传递 a 的副本 cout a a endl; // a 不变仍然是 5 return 0; }1.2.2 按引用传递传递地址通过引用传递参数函数直接修改原始数据。代码语言javascriptAI代码解释#include iostream using namespace std; void addReference(int x) { x 10; // 修改原数据 } int main() { int a 5; addReference(a); // 传递 a 的引用 cout a a endl; // a 被修改结果为 15 return 0; }1.2.3 按指针传递通过指针传递地址使用指针传递参数函数通过指针修改数据。代码语言javascriptAI代码解释#include iostream using namespace std; void addPointer(int* x) { *x 10; // 通过指针修改数据 } int main() { int a 5; addPointer(a); // 传递 a 的地址 cout a a endl; // a 被修改结果为 15 return 0; }2. 面向对象编程OOPC 是一种支持面向对象编程OOP的语言它通过封装、继承和多态来提供强大的结构化设计能力。2.1 类与构造函数C 中的类与 Python 类似类成员包含数据和方法。构造函数用于初始化对象。C 类与构造函数示例代码语言javascriptAI代码解释#include iostream using namespace std; class Person { public: string name; int age; // 构造函数 Person(string n, int a) { name n; age a; cout Constructor called! endl; } void introduce() { cout My name is name and I am age years old. endl; } ~Person() { // 析构函数 cout Destructor called! endl; } }; int main() { // 创建对象时自动调用构造函数 Person p1(John, 25); p1.introduce(); // 调用成员函数 return 0; // 程序结束时自动调用析构函数 }代码语言javascriptAI代码解释// 输出 Constructor called! My name is John and I am 25 years old. Destructor called!解析•构造函数Person(string n, int a)初始化name和age成员。•析构函数~Person()是析构函数当对象生命周期结束时自动调用用于清理资源。•成员函数introduce输出对象的属性。2.2 继承继承是 OOP 的核心概念之一它允许子类继承父类的成员函数和数据成员从而实现代码复用。C 继承示例代码语言javascriptAI代码解释#include iostream using namespace std; // 基类 class Animal { public: void speak() { cout Animal speaks! endl; } }; // 派生类 class Dog : public Animal { public: void speak() { cout Dog barks! endl; } }; int main() { Animal a; Dog d; a.speak(); // 调用基类的函数 d.speak(); // 调用派生类的函数 return 0; }代码语言javascriptAI代码解释// 输出 Animal speaks! Dog barks!解析•基类Animal提供了speak()函数。•派生类Dog继承了Animal类并重写了speak()函数。•多态性C 允许我们通过基类指针或引用调用派生类的方法具体调用哪个版本的函数取决于对象的实际类型。2.3 多态多态是 C 中的一项强大特性它允许同一个接口以不同的方式进行操作。C 多态示例代码语言javascriptAI代码解释#include iostream using namespace std; class Animal { public: virtual void speak() { // 使用 virtual 关键字声明虚函数 cout Animal speaks! endl; } }; class Dog : public Animal { public: void speak() override { cout Dog barks! endl; } }; int main() { Animal * animalPtr; Dog dog; animalPtr dog; animalPtr-speak(); // 动态绑定调用 Dog 类的 speak return 0; }代码语言javascriptAI代码解释// 输出 Dog barks!解析•虚函数基类中的speak()被声明为virtual这使得 C 能够根据对象的实际类型决定调用哪个函数。•动态绑定通过基类指针animalPtr指向Dog对象时调用speak()会调用Dog类中的speak()函数。注意如果运行弹出警告如下:代码语言javascriptAI代码解释tem.cpp:13:18: warning: override keyword is a C11 extension [-Wc11-extensions] 13 | void speak() override { | ^ 1 warning generated.修复What is a C11 extension [-Wc11-extensions]如果使用Code Runner添加配置如下如果是命令行运行添加参数-stdc17代码语言javascriptAI代码解释g -stdc17 tem.cpp -o tem3. 总结在这篇文章中我们探讨了 C 中函数的定义与返回值、参数传递方式、构造函数、析构函数、继承和多态等重要概念。C 提供了更高效和灵活的内存控制使得它在性能要求较高的场合比 Python 更具优势。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2573110.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!