【C++入门讲解】
目录
编辑
--------------------------------------begin----------------------------------------
一、C++简介
二、开发环境搭建
主流开发工具推荐
第一个C++程序
三、核心语法精讲
1. 变量与数据类型
2. 运算符大全
3. 流程控制结构
4. 函数深度解析
5. 数组与容器
四、面向对象编程入门
类与对象
五、学习路线建议
六、常见问题解答
路过的佬们点点关注哦~
你们的鼓励是我前进的动力~
-------------------------------------------end-------------------------------------
--------------------------------------begin----------------------------------------
一、C++简介
C++作为一门久经考验的编程语言,自1979年由Bjarne Stroustrup在贝尔实验室创建以来,始终保持着旺盛的生命力。它不仅完美继承了C语言的高效特性,更通过面向对象编程(OOP)的加持,成为系统开发、游戏引擎、高频交易等领域的首选语言。最新的C++20标准引入了模块(Modules)、概念(Concepts)等现代特性,使其在保持性能优势的同时,开发效率也大幅提升。
二、开发环境搭建
主流开发工具推荐
-
Visual Studio 2022(Windows):智能IntelliSense、强大调试器
-
Xcode(macOS):深度集成Apple生态
-
CLion(跨平台):智能重构、CMake支持
-
在线编译器(新手友好):Wandbox、Compiler Explorer
第一个C++程序
// 预处理指令引入输入输出库
#include <iostream>// 使用标准命名空间(避免std::前缀)
using namespace std;// 程序入口点
int main() {// 控制台输出cout << "Hello, C++ World!" << endl;// 返回操作系统状态码return 0;
}
代码解读:
-
#include
:引入头文件(Header File) -
main()
:程序执行的唯一入口 -
cout
:标准输出流对象 -
<<
:流插入运算符 -
endl
:换行并刷新缓冲区
三、核心语法精讲
1. 变量与数据类型
变量命名规范:
-
使用有意义的英文命名(如
studentCount
而非s1
) -
遵循驼峰命名法或下划线命名法
-
避免保留字(如class, virtual等)
2. 运算符大全
int a = 10, b = 3;
// 算术运算符
cout << a % b; // 取模运算 → 1// 关系运算符
bool result = (a >= 5); // → true// 逻辑运算符
if(a > 0 && b < 5) { /*...*/ }// 位运算符
int flags = 0b1010;
flags |= 0b0101; // 位或 → 0b1111// 三目运算符
int max = (a > b) ? a : b;
3. 流程控制结构
智能温度检测系统:
float temperature = 28.5;if(temperature > 37.5) {cout << "高温警报!" << endl;
} else if(temperature < 10) {cout << "低温警告" << endl;
} else {cout << "温度正常" << endl;
}// 循环结构示例
const int MAX_ATTEMPTS = 3;
int attempts = 0;
while(attempts++ < MAX_ATTEMPTS) {cout << "登录尝试:" << attempts << endl;
}
4. 函数深度解析
// 函数原型声明
double calculateBMI(double weight, double height);int main() {double bmi = calculateBMI(70.5, 1.75);// ...
}// 函数定义
double calculateBMI(double w, double h) {return w / (h * h);
}
参数传递方式:
-
值传递:创建副本(默认方式)
-
引用传递:
void swap(int &a, int &b)
-
指针传递:
void modify(int *ptr)
5. 数组与容器
传统数组:
int scores[5] = {90, 85, 77, 95, 88};
// 二维数组
int matrix[2][3] = {{1,2,3}, {4,5,6}};
现代容器(推荐):
#include <vector>
vector<string> names {"Alice", "Bob", "Charlie"};
names.push_back("David"); // 动态扩容
四、面向对象编程入门
类与对象
class Rectangle {
private:double width, height;public:// 构造函数Rectangle(double w, double h) : width(w), height(h) {}// 成员函数double area() {return width * height;}// setter方法void setDimensions(double w, double h) {width = w > 0 ? w : 1;height = h > 0 ? h : 1;}
};// 使用示例
Rectangle rect(5.0, 3.0);
cout << "面积:" << rect.area(); // 输出15
五、学习路线建议
-
基础夯实(1-2个月)
-
掌握基本语法
-
理解内存管理
-
熟练使用STL容器
-
-
进阶提升(3-6个月)
-
模板编程
-
智能指针
-
多线程编程
-
-
专项突破(持续学习)
-
图形编程(OpenGL/DirectX)
-
网络编程(Boost.Asio)
-
机器学习(MLpack)
-
推荐学习资源:
-
经典书籍:《C++ Primer》《Effective C++》
-
在线课程:Coursera专项课程、Udemy实战项目
-
开源项目:参与GitHub上的C++项目
六、常见问题解答
Q1:C++与Python的主要区别?
-
执行方式:C++编译型 vs Python解释型
-
内存管理:C++手动管理 vs Python自动GC
-
性能表现:C++执行效率更高
-
应用领域:C++适合系统级开发,Python擅长快速原型
Q2:指针和引用有什么区别?
-
指针可以重新指向不同对象,引用一旦绑定不可更改
-
指针可以为nullptr,引用必须绑定有效对象
-
指针需要解引用操作(*ptr),引用直接使用
Q3:如何避免内存泄漏?
-
使用RAII原则(Resource Acquisition Is Initialization)
-
优先使用智能指针(unique_ptr/shared_ptr)
-
使用valgrind等内存检测工具
掌握C++需要持续的实践与思考,建议从简单的控制台程序开始,逐步过渡到图形界面和网络应用开发。记住,每个优秀的C++程序员都经历过无数次的编译错误和调试过程,坚持就是胜利!
路过的佬们点点关注哦~
你们的鼓励是我前进的动力~
-------------------------------------------end-------------------------------------
相关文章:
【C++入门讲解】
目录 编辑 --------------------------------------begin---------------------------------------- 一、C简介 二、开发环境搭建 主流开发工具推荐 第一个C程序 三、核心语法精讲 1. 变量与数据类型 2. 运算符大全 3. 流程控制结构 4. 函数深度解析 5. 数组与容…...
wxWidgets生成HTML文件,带图片转base64数据
编译环境大家可以看我之前的文章,CodeBlocks + msys2 + wx3.2,win10 这里功能就是生成HTML文件,没用HTML库,因为是自己固定的格式,图片是一个vector,可以动态改变数量的。 效果如下: #include <wx/string.h> #include <wx/file.h> #include <wx/ima…...
Redis --- 使用HyperLogLog实现UV(访客量)
UV 和 PV 是网站或应用数据分析中的常用指标,用于衡量用户活跃度和页面访问量。 UV (Unique Visitor 独立访客): 指的是在一定时间内访问过网站或应用的独立用户数量。通常根据用户的 IP 地址、Cookies 或用户 ID 等来唯一标识一个用户。示例࿱…...
Nginx配置 ngx_http_proxy_connect_module 模块及安装
1、配置完互联网yum源后,安装相关依赖软件包 [root@server soft]# yum install -y patch pcre pcre-devel make gcc gcc-c++ openssl openssh [root@server soft]# yum install openssl* 2、解压缩软件,加载模块 [root@server soft]# ls nginx-1.20.2 nginx-1.20.2.tar.gz …...
论文阅读:MGMAE : Motion Guided Masking for Video Masked Autoencoding
MGMAE:Motion Guided Masking for Video Masked Autoencoding Abstract 掩蔽自编码(Masked Autoencoding)在自监督视频表示学习中展现了出色的表现。时间冗余导致了VideoMAE中高掩蔽比率和定制的掩蔽策略。本文旨在通过引入运动引导掩蔽策略࿰…...
【NodeJS】解决NodeJS前端项目在开发环境访问指定的地址失败或超时,测试和设置环境变量的方式
本文目录 代码测试网络 两种解决方式设置环境变量代码中设置 在日常开发中,代码中偶尔需要访问特定的服务例如github,而NodeJS在访问网络时默认是不受其他工具影响的,需要通过环境变量或代码配置的方式实现Proxy,本文简单描述了调…...
深度学习中的梯度相关问题
1.求偏导的意义、作用?为什么要求偏导? 偏导数帮助我们理解函数在某一个变量变化时,函数值如何变化,同时保持其他变量不变。在机器学习中,尤其是训练神经网络时,我们通过求偏导数来确定如何调整模型参数以…...
Spider 数据集上实现nlp2sql训练任务
NLP2SQL(自然语言处理到 SQL 查询的转换)是一个重要的自然语言处理(NLP)任务,其目标是将用户的自然语言问题转换为相应的 SQL 查询。这一任务在许多场景下具有广泛的应用,尤其是在与数据库交互的场景中&…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_show_version_info函数
声明 在 nginx.c 开头 static void ngx_show_version_info(void); 实现 static void ngx_show_version_info(void) {ngx_write_stderr("nginx version: " NGINX_VER_BUILD NGX_LINEFEED);if (ngx_show_help) {ngx_write_stderr("Usage: nginx [-?hvVtTq] [-s s…...
LM Studio本地调用模型的方法
首先需要下载LM Studio,(LM Studio - Discover, download, and run local LLMs)安装好后,需要对index.js文件进行修改,主要是对相关源hugging face的地址修改。 以macOS为例: cd /Applications/LM\ Studi…...
Open3d Qt的环境配置
Open3d Qt的环境配置 一、概述二、操作流程2.1 下载文件2.2 新建文件夹2.3 环境变量设置2.4 qt6 引用3、qt中调用4、资源下载一、概述 目前统一使用qt6配置,open3d中可视化功能目前使用vtk代替,语言为c++。 二、操作流程 2.1 下载文件 访问open3d github链接,进入releas…...
数据结构——链表
引言 链表(Linked List)是计算机科学中最基础且灵活的数据结构之一。与数组的连续内存分配不同,链表通过指针将零散的内存块串联起来,允许动态调整数据规模,避免内存浪费。链表广泛应用于操作系统内核、数据库索引、动…...
数据结构 图
目录 前言 一,图的基本知识 二,图的表示法:边列表 三,图的表示方法:邻接矩阵 四,图的表示方法:邻接表 五,功能 总结 前言 图是一个非常有意思东西,可以运用到生活中…...
2025.2.8总结
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 N,MN,M,表示该图共有 NN 个结点和 MM 条无向边。 接下来 MM 行每行包含三个整数 Xi,Yi,ZiXi,Yi,Zi&#…...
软件模拟I2C案例(寄存器实现)
引言 在经过前面对I2C基础知识的理解,对支持I2C通讯的EEPROM芯片M24C02的简单介绍以及涉及到的时序操作做了整理。接下来,我们就正式进入该案例的实现环节了。本次案例是基于寄存器开发方式通过软件模拟I2C通讯协议,然后去实现相关的需求。 阅…...
开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具
开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具 背景与研究目的 在快速发展的软件开发领域,代码辅助工具已成为提高开发效率和质量的关键。然而,商业付费工具如通义灵码和腾讯AI代码助手,尽管功能强大,但其高昂的成本和许可证限制,使得许多企业寻求更具吸…...
c++:list
1.list的使用 1.1构造 1.2迭代器遍历 (1)迭代器是算法和容器链接起来的桥梁 容器就是链表,顺序表等数据结构,他们有各自的特点,所以底层结构是不同的。在不用迭代器的前提下,如果我们的算法要作用在容器上…...
Websocket从原理到实战
引言 WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议,它使得客户端和服务器之间能够进行实时、双向的通信,既然是通信协议一定要从发展历史到协议内容到应用场景最后到实战全方位了解 发展历史 WebSocket 最初是为了解决 HTTP 协议在实时…...
探索robots.txt:网站管理者的搜索引擎指南
在数字时代,网站如同企业的在线名片,其内容和结构对搜索引擎的可见性至关重要。而在这背后,有一个默默工作的文件——robots.txt,它扮演着搜索引擎与网站之间沟通桥梁的角色。本文将深入探讨robots.txt的功能、编写方法及其在现代…...
ubuntu中如何在vscode的终端目录后显示(当前的git分支名) 实测有用
效果展示 配置过程: 在 Ubuntu 中,如果你想在 VS Code 的终端提示符后显示当前的 Git 分支名,可以通过修改 Shell 配置文件(如 ~/.bashrc 或 ~/.zshrc)来实现。以下是具体步骤: 1. 确定使用的 Shell 首…...
0012—数组
存取一组数据,使用数组。 数组是一组相同类型元素的集合。 要存储1-10的数字,怎么存储? C语言中给了数组的定义:一组相同类型元素的集合。 创建一个空间创建一组数: 一、数组的定义 int arr[10] {1,2,3,4,5,6,7,8,…...
决策树算法相关文献
决策树是一种基于树状结构的机器学习算法,广泛应用于分类和回归任务。尽管决策树算法已经非常成熟,但研究者们仍在不断探索新的方法和技术,以进一步提升其性能、适应性和可解释性。 以下是当前研究者对决策树算法的最新研究方向和内容&#x…...
DeepSeek在FPGA/IC开发中的创新应用与未来潜力
随着人工智能技术的飞速发展,以DeepSeek为代表的大语言模型(LLM)正在逐步渗透到传统硬件开发领域。在FPGA(现场可编程门阵列)和IC(集成电路)开发这一技术密集型行业中,DeepSeek凭借其…...
学习threejs,使用Lensflare模拟镜头眩光
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Lensflare 二、&…...
RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决
RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决 1、报错情况 下载:https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle 用idea打开,启动: 日志有报错: 点右侧m图标,maven有以下报误 &…...
kafka服务端之日志磁盘存储
文章目录 页缓存顺序写零拷贝 Kafka依赖于文件系统(更底层地来说就是磁盘)来存储和缓存消息 。 那么kafka是如何让自身在使用磁盘存储的情况下达到高性能的?接下来主要从3各方面详细解说。 页缓存 页缓存是操作系统实现的一种主要的磁盘缓存…...
deepseek来讲lua
Lua 是一种轻量级、高效、可嵌入的脚本语言,广泛应用于游戏开发、嵌入式系统、Web 服务器等领域。以下是 Lua 的主要特点和一些基本概念: 1. 特点 轻量级:Lua 的核心非常小,适合嵌入到其他应用程序中。高效:Lua 的执…...
C++开发(软件开发)常见面试题
目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构? 4、有了mac地址为什么还要ip地址?ip地址的作用 5、有了路由器为什么还要交换机? 6、面向对象三大特性 7、友元函数 8、大端小端 …...
AtCoder Beginner Contest 391(A~E题题解)
A - Lucky Direction 思路:纯模拟的一个水题 #include <bits/stdc.h> using namespace std; #define int long long string s; signed main() { cin>>s;for(int i0;i<s.size();i){char cs[i];if(cN){cout<<"S";}else if(c…...
使用线性回归模型逼近目标模型 | PyTorch 深度学习实战
前一篇文章,计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 使用线性回归模型逼近目标模型 什么是回归什么是线性回归使用 PyTorch 实现线性回归模型代码执行结…...
解决com.kingbase8.util.KSQLException: This _connection has been closed.
问题描述 一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend.java.net.SocketTime…...
Pyqt 的QTableWidget组件
QTableWidget 是 PyQt6 中的一个表格控件,用于显示和编辑二维表格数据。它继承自 QTableView,提供了更简单的方式来处理表格数据,适合用于需要展示结构化数据的场景。 1. 常用方法 1.1 构造函数 QTableWidget(parent: QWidget None)&#x…...
DeepSeek R1 Distill Llama 70B(免费版)API使用详解
DeepSeek R1 Distill Llama 70B(免费版)API使用详解 在人工智能领域,随着技术的不断进步,各种新的模型和应用如雨后春笋般涌现。今天,我们要为大家介绍的是OpenRouter平台上提供的DeepSeek R1 Distill Llama 70B&…...
24.ppt:小李-图书策划方案【1】
目录 NO1234 NO5678 NO1234 新建PPT两种方式👇docx中视图→导航窗格→标题1/2/3ppt新建幻灯片→从大纲→重置开始→版式设计→主题插入→表格 NO5678 SmartArt演示方案:幻灯片放映→自定义幻灯片放映→新建→选中添加...
百科词条创建审核不通过的原因有哪些?
我们知道的国内有名的百科网站有百度百科、快懂百科、搜狗百科、360百科,这些有名的百科网站。一般来说,百科的词条排名都是在第一页的,无论是名人、明星、软件、影视名称,还是其他名称,大多排名都在首页,这就拥有了更多的曝光量和流量,而且由于百科是人们获取信息、查找资料的…...
amis组件crud使用踩坑
crud注意 过滤条件参数同步地址栏 默认 CRUD 会将过滤条件参数同步至浏览器地址栏中,比如搜索条件、当前页数,这也做的目的是刷新页面的时候还能进入之前的分页。 但也会导致地址栏中的参数数据合并到顶层的数据链中,例如:自动…...
【docker】Failed to allocate manager object, freezing:兼容兼容 cgroup v1 和 v2
参考大神让系统同时兼容 cgroup v1 和 v2 要解决你系统中只挂载了 cgroup v2 但需要兼容 cgroup v1 的问题,可以通过以下几步来使系统同时兼容 cgroup v1 和 cgroup v2。这样 Docker 和其他服务就可以正常工作了。步骤 1:更新 Grub 配置,启用兼容模式 编辑 GRUB 配置来启用同…...
LeetCode:503.下一个更大元素II
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:503.下一个更大元素II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[…...
【AI日记】25.02.08
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试,明后天打算好好准备一下,我打算主要研究下 AI 如何在该行业赋能和应用,以及该行业未来的发展前景和公司痛点&#…...
32. C 语言 安全函数( _s 尾缀)
本章目录 前言什么是安全函数?安全函数的特点主要的安全函数1. 字符串操作安全函数2. 格式化输出安全函数3. 内存操作安全函数4. 其他常用安全函数 安全函数实例示例 1:strcpy_s 和 strcat_s示例 2:memcpy_s示例 3:strtok_s 总结 …...
常用数据结构之String字符串
字符串 在Java编程语言中,字符可以使用基本数据类型char来保存,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 操作字符串常用的有三种类:String、StringBuilder、StringBuffer 接下来看看这三类常见用…...
Android开发获取缓存,删除缓存
Android开发获取缓存,删除缓存 app设置中往往有清理缓存的功能。会显示当前缓存时多少,然后可以点击清理缓存 直接上代码: object CacheHelper {/*** 获取缓存大小* param context* return* throws Exception*/JvmStaticfun getTotalCache…...
网络安全 | 保护智能家居和企业IoT设备的安全策略
网络安全 | 保护智能家居和企业IoT设备的安全策略 一、前言二、智能家居和企业 IoT 设备面临的安全威胁2.1 设备自身安全缺陷2.2 网络通信安全隐患2.3 数据隐私风险2.4 恶意软件和攻击手段 三、保护智能家居和企业 IoT 设备的安全策略3.1 设备安全设计与制造环节的考量3.2 网络…...
掌握API和控制点(从Java到JNI接口)_38 JNI从C调用Java函数 01
1. Why? 将控制点下移到下C/C层 对古典视角的反思 App接近User,所以App在整体架构里,是主导者,拥有控制权。所以, App是架构的控制点所在。Java函数调用C/C层函数,是合理的。 但是EIT造形告诉我们: App…...
vue组件间的数据传递:自定义输入组件(v-model/defineModel)
文章目录 引言I Vue 3.4 开始,推荐使用 defineModel() 宏子组件使用defineModel父组件用 v-model 绑定值底层机制II Vue 3.4之前:自定义输入组件(组件中实现 v-model )前置知识父组件监听自定义事件进行 v-model 的数据绑定子组件通过监听input事件触发自定义的 `update:mo…...
记录一下 在Mac下用pyinstallter 打包 Django项目
安装: pip install pyinstaller 在urls.py from SheepMasterOneToOne import settings from django.conf.urls.static import staticurlpatterns [path("admin/", admin.site.urls),path(generate_report/export/, ReportAdmin(models.Report, admin.site).generat…...
大模型相关概念
文章目录 部署相关数据并行模型并行张量并行管道并行(流水线并行) 混合并行(数据并行模型并行)显存优化技术InfiniBand去中心化的All-Reduce操作软件 大模型命名**1. 模型架构相关****2. 模型用途相关****3. 训练方法相关****4. 多…...
【实用教程】在 Android Studio 中连接 MuMu 模拟器
MuMu 模拟器是一个非常流行的安卓模拟器,特别适合开发人员进行应用测试,我使用它的根本原因在于Android Studio自带的AVM实现是太难用了,但是Mumu模拟器启动以后不会自动被Android Studio识别到,但是其他模拟器都是能够正常被Andr…...
Linux 安装 Ollama
1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…...
双亲委派(JVM)
1.双亲委派 在 Java 中,双薪委派通常是指双亲委派模型,它是 Java 类加载器的一种工作模式,用于确保类加载的安全性和一致性。以下是其相关介绍: 定义与作用 定义:双亲委派模型要求除了顶层的启动类加载器外…...