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

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 更具优势。

相关文章:

Python到C++: 函数与面向对象编程(OOP)

函数与返回值在 C 中&#xff0c;函数是程序中的基本单位。每个函数都拥有返回类型、函数名和参数列表&#xff0c;函数执行后返回相应的结果。1.1 C 函数定义与返回值示例&#xff1a;代码语言&#xff1a;javascriptAI代码解释#include <iostream> using namespace std…...

AI Video Starter Kit视频编辑功能详解:多片段合成与音频处理

AI Video Starter Kit视频编辑功能详解&#xff1a;多片段合成与音频处理 【免费下载链接】video-starter-kit Enable AI models for video production in the browser 项目地址: https://gitcode.com/gh_mirrors/vi/video-starter-kit AI Video Starter Kit是一款基于浏…...

终极指南:如何一键将B站缓存视频转换为MP4格式

终极指南&#xff1a;如何一键将B站缓存视频转换为MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的困扰&#xff…...

告别手动输入:在TI IWR6843AOP毫米波雷达工程中实现CLI命令自动配置的保姆级教程

毫米波雷达开发效率革命&#xff1a;IWR6843AOP自动配置CLI命令的工程实践 1. 嵌入式开发者的效率痛点与解决方案 每次上电调试都要在串口终端里逐行输入几十条雷达配置命令的日子该结束了。对于使用TI IWR6843AOP毫米波雷达的开发者而言&#xff0c;重复输入profileCfg、chirp…...

STC89C52+L298N+E18-D50NK:手把手教你做一个能自己躲开障碍的51单片机小车(附完整代码)

STC89C52L298NE18-D50NK&#xff1a;从零打造智能避障小车的实战指南 1. 项目概述与核心组件解析 智能避障小车作为嵌入式开发的经典练手项目&#xff0c;不仅能系统性地掌握单片机开发全流程&#xff0c;还能深入理解传感器与执行机构的协同工作原理。这个项目特别适合有一定…...

Meshtastic Python CLI 中通道 PSK 设置警告信息的终极解析指南

Meshtastic Python CLI 中通道 PSK 设置警告信息的终极解析指南 Meshtastic 是一个开源的、去中心化的无线通信平台&#xff0c;专为构建离线网状网络而设计。其 Python CLI 工具提供了强大的设备配置功能&#xff0c;其中通道 PSK&#xff08;预共享密钥&#xff09;设置是保…...

Meshtastic Python客户端中Protobuf消息的终极JSON序列化指南:解决常见问题与最佳实践

Meshtastic Python客户端中Protobuf消息的终极JSON序列化指南&#xff1a;解决常见问题与最佳实践 Meshtastic是一个开源的、去中心化的Mesh网络通信项目&#xff0c;而Meshtastic Python客户端是与Meshtastic设备通信的核心工具。在开发过程中&#xff0c;Protobuf消息的JSON序…...

Vue2+Element复用实战:如何快速‘白嫖’一个开源Web版Kettle的任务编排前端?

Vue2Element实战&#xff1a;开源数据集成平台前端模块的高效复用指南 在数据集成领域&#xff0c;快速构建一个功能完善的Web界面往往是项目落地的关键瓶颈。本文将深入探讨如何通过复用现有开源项目的前端代码&#xff0c;在Vue2Element UI技术栈基础上&#xff0c;快速搭建专…...

如何在Ubuntu系统上解决Meshtastic Python项目的设备兼容性问题

如何在Ubuntu系统上解决Meshtastic Python项目的设备兼容性问题 Meshtastic Python项目是一个强大的开源工具&#xff0c;专门用于与Meshtastic设备进行通信的Python CLI和API。对于Ubuntu用户来说&#xff0c;设备兼容性问题是使用过程中最常见的挑战之一。本文将为您提供完整…...

yq性能优化终极指南:内存管理和流式处理技巧大全

yq性能优化终极指南&#xff1a;内存管理和流式处理技巧大全 【免费下载链接】yq Command-line YAML, XML, TOML processor - jq wrapper for YAML/XML/TOML documents 项目地址: https://gitcode.com/gh_mirrors/yq1/yq yq是一款功能强大的命令行YAML、XML和TOML处理器…...

相控阵天线校准实战:旋转矢量法 vs. 近场扫描,到底该怎么选?(含优缺点与场景分析)

相控阵天线校准实战&#xff1a;旋转矢量法 vs. 近场扫描&#xff0c;到底该怎么选&#xff1f; 在相控阵雷达系统的设计与维护中&#xff0c;天线校准是确保波束指向精度和辐射性能的关键环节。面对旋转矢量法、近场扫描等不同校准方案&#xff0c;工程师常陷入选择困境——每…...

Baby Dragon Hatchling (BDH)未来路线图:下一代类脑AI架构的5大发展方向

Baby Dragon Hatchling (BDH)未来路线图&#xff1a;下一代类脑AI架构的5大发展方向 【免费下载链接】bdh Baby Dragon Hatchling (BDH) – Architecture and Code 项目地址: https://gitcode.com/gh_mirrors/bd/bdh Baby Dragon Hatchling (BDH)是一个专注于类脑AI架构…...

MPC-BE:你的Windows电脑需要一个什么样的播放器?5个场景告诉你答案

MPC-BE&#xff1a;你的Windows电脑需要一个什么样的播放器&#xff1f;5个场景告诉你答案 【免费下载链接】MPC-BE MPC-BE – универсальный проигрыватель аудио и видеофайлов для операционной системы …...

预推免线下复试全记录:从华工、暨大到湖大,我的‘赶考’日程与面试踩坑复盘

预推免线下复试全记录&#xff1a;从华工、暨大到湖大&#xff0c;我的‘赶考’日程与面试踩坑复盘 1. 异地复试行程规划与时间管理 连续参加多所高校的线下复试&#xff0c;最考验人的不是面试本身&#xff0c;而是如何在有限时间内高效完成跨城市行程安排。我的复试日程表如下…...

深入Linux FrameBuffer:从`fb_var_screeninfo`的字段看懂屏幕时序与分辨率设置

深入Linux FrameBuffer&#xff1a;从fb_var_screeninfo的字段看懂屏幕时序与分辨率设置 在嵌入式系统和图形界面开发中&#xff0c;FrameBuffer是连接软件与显示硬件的关键桥梁。而fb_var_screeninfo这个看似简单的结构体&#xff0c;却承载着显示器最核心的时序参数配置。很多…...

若依单体版Excel导出进阶:两种动态列方案对比与选型指南(含完整代码)

若依单体版Excel导出进阶&#xff1a;两种动态列方案对比与选型指南&#xff08;含完整代码&#xff09; 在企业级后台管理系统开发中&#xff0c;数据导出功能几乎是标配需求。但传统的一键导出往往将所有字段打包下载&#xff0c;导致用户需要手动在Excel中二次筛选&#xff…...

终极指南:如何快速上手3140亿参数Grok-1模型——8专家MoE架构与JAX实现全解析

终极指南&#xff1a;如何快速上手3140亿参数Grok-1模型——8专家MoE架构与JAX实现全解析 【免费下载链接】grok-1 Grok open release 项目地址: https://gitcode.com/GitHub_Trending/gr/grok-1 Grok-1是一款拥有3140亿参数的强大开源AI模型&#xff0c;采用创新的8专家…...

HTTPLeaks实战教程:保护你的网站免受CSP和隐私泄露威胁

HTTPLeaks实战教程&#xff1a;保护你的网站免受CSP和隐私泄露威胁 【免费下载链接】HTTPLeaks HTTPLeaks - All possible ways, a website can leak HTTP requests 项目地址: https://gitcode.com/gh_mirrors/ht/HTTPLeaks 在当今数字化时代&#xff0c;网站安全已成为…...

Viselect:如何在5分钟内为网页添加桌面级可视化选择功能

Viselect&#xff1a;如何在5分钟内为网页添加桌面级可视化选择功能 【免费下载链接】selection ✨ Viselect - A high performance and lightweight library to add a visual way of selecting elements, just like on your Desktop. Zero dependencies, super small. Support…...

如何使用edb-debugger:多架构调试的终极指南

如何使用edb-debugger&#xff1a;多架构调试的终极指南 【免费下载链接】edb-debugger edb is a cross-platform AArch32/x86/x86-64 debugger. 项目地址: https://gitcode.com/gh_mirrors/ed/edb-debugger edb-debugger是一款功能强大的跨平台调试工具&#xff0c;支持…...

终极指南:如何让Switch完美支持Xbox和PS第三方控制器

终极指南&#xff1a;如何让Switch完美支持Xbox和PS第三方控制器 【免费下载链接】sys-con Nintendo Switch sysmodule that allows support for third-party controllers 项目地址: https://gitcode.com/gh_mirrors/sy/sys-con 想要在任天堂Switch上使用Xbox或PlayStat…...

FStar核心概念解析:依赖类型、效果系统和验证策略的终极指南

FStar核心概念解析&#xff1a;依赖类型、效果系统和验证策略的终极指南 【免费下载链接】FStar A Proof-oriented Programming Language 项目地址: https://gitcode.com/gh_mirrors/fs/FStar FStar是一款面向证明的编程语言&#xff08;A Proof-oriented Programming L…...

终极防休眠解决方案:Move Mouse如何智能保持电脑持续工作

终极防休眠解决方案&#xff1a;Move Mouse如何智能保持电脑持续工作 【免费下载链接】movemouse Move Mouse is a simple piece of software that is designed to simulate user activity. 项目地址: https://gitcode.com/gh_mirrors/mo/movemouse 你是否曾因电脑自动锁…...

SUSI.AI完整指南:10个技巧让AI助手更懂你

SUSI.AI完整指南&#xff1a;10个技巧让AI助手更懂你 【免费下载链接】susi.ai SUSI.AI Web Client https://susi.ai 项目地址: https://gitcode.com/gh_mirrors/su/susi.ai SUSI.AI是一款结合模式匹配、互联网数据、数据流和推理引擎原理的人工智能系统。通过其独特的自…...

MCP 2026任务编排实战手册:从单机脚本到跨17+异构集群的零信任协同调度(含OpenTelemetry+WebAssembly双栈验证)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026跨服务器任务编排全景概览 MCP 2026&#xff08;Multi-Cluster Protocol 2026&#xff09;是新一代分布式任务协调协议&#xff0c;专为异构云环境下的跨服务器、跨区域、跨集群任务编排而设计…...

灵光App冷启动惊艳,商业化却卡在“生成”到“交易”最后一公里

突发&#xff01;灵光在AI to C市场另辟蹊径在2026年的AI to C市场&#xff0c;当多数AI App还在争夺对话框里的停留时&#xff0c;灵光把入口前移&#xff0c;让用户先把需求做成一个小应用。这一举措使灵光显得特别&#xff0c;也让它从一开始就处于一个更矛盾的位置。灵光产…...

GP2040-CE DIY手柄制作完整流程:从零件采购到成品测试

GP2040-CE DIY手柄制作完整流程&#xff1a;从零件采购到成品测试 【免费下载链接】GP2040-CE Multi-Platform Gamepad Firmware for Raspberry Pi Pico and other RP2040 boards 项目地址: https://gitcode.com/gh_mirrors/gp/GP2040-CE GP2040-CE是一款适用于Raspberr…...

React-Cropper与TypeScript完美结合:类型安全开发指南

React-Cropper与TypeScript完美结合&#xff1a;类型安全开发指南 【免费下载链接】react-cropper Cropperjs as React component 项目地址: https://gitcode.com/gh_mirrors/re/react-cropper React-Cropper是Cropperjs的React组件实现&#xff0c;为开发者提供了类型安…...

SwAV代码架构深度剖析:从main_swav.py到resnet50.py的完整实现

SwAV代码架构深度剖析&#xff1a;从main_swav.py到resnet50.py的完整实现 【免费下载链接】swav PyTorch implementation of SwAV https//arxiv.org/abs/2006.09882 项目地址: https://gitcode.com/gh_mirrors/sw/swav SwAV&#xff08;Swapped Assignments between Vi…...

终极指南:如何轻松重置JetBrains IDE试用期,告别30天限制烦恼!

终极指南&#xff1a;如何轻松重置JetBrains IDE试用期&#xff0c;告别30天限制烦恼&#xff01; 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为IntelliJ IDEA、PyCharm、WebStorm等JetBrains IDE的30天试…...