【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. 数组与容…...
数据表中的视图操作
文章目录 一、视图概述二、为什么要使用视图三、创建视图四、查看视图 一、视图概述 小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试,这时候很多班级筛选出来的这些同学就可以临时组成一个班级…...
BFS算法篇——广度优先搜索,探索未知的旅程(上)
文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索(BFS)是一种广泛应用于图论中的算法,常用于寻找最短路径、图的遍历等问题。与深度优先搜索(DFS&…...
mongodb 使用内存过大分析
os 分析 内存使用 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -10swap 使用 for i in $(ls /proc | grep "^[0-9]" | awk $0>100); do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i/smaps;done| sort -k2nr | headmo…...
CNN-day5-经典神经网络LeNets5
经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业(邮政行业)价值的卷积神经网络 参考:论文笔记:Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …...
登录到docker里
在Docker中登录到容器通常有两种情况: 登录到正在运行的容器内部:如果你想要进入到正在运行的容器内部,可以使用docker exec命令。 登录到容器中并启动一个shell:如果你想要启动一个容器,并在其中启动一个shell&…...
利用PHP爬虫开发获取淘宝分类详情:解锁电商数据新视角
在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争策略制定以及电商运营优化具有极高的价值。通过PHP爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。本文将详细介绍如何使用P…...
LeetCode 142题解|环形链表II的快慢指针法(含数学证明)
题目如下: 解题过程如下: 思路:快慢指针在环里一定会相遇,相遇结点到入环起始结点的距离 链表头结点到入环起始结点的距离(距离看从左往右的方向,也就是单链表的方向),从链表头结点…...
[图文]课程讲解片段-Fowler分析模式的剖析和实现01
解说: GJJ-004-1,分析模式高阶Fowler分析模式的剖析和实现,这个课是针对Martin Fowler的《分析模式》那本书里面的模式来讲解,对里面的模式来剖析,然后用代码来实现。 做到这一步的,我们这个是世界上独…...
Dify使用
1. 概述 官网:Dify.AI 生成式 AI 应用创新引擎 文档:欢迎使用 Dify | Dify GITHUB:langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, ob…...
解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
7.PPT:“中国梦”学习实践活动【20】
目录 NO1234 NO5678 NO9\10\11 NO1234 考生文件夹下创建一个名为“PPT.pptx”的新演示文稿Word素材文档的文字:复制/挪动→“PPT.pptx”的新演示文稿(蓝色、黑色、红色) 视图→幻灯片母版→重命名:“中国梦母版1”→背景样…...
Linux系统-centos防火墙firewalld详解
Linux系统-centos7.6 防火墙firewalld详解 1 firewalld了解 CentOS 7.6默认的防火墙管理工具是firewalld,它取代了之前的iptables防火墙。firewalld属于典型的包过滤防火墙或称之为网络层防火墙,与iptables一样,都是用来管理防火墙的工具&a…...
零基础都可以本地部署Deepseek R1
文章目录 一、硬件配置需求二、详细部署步骤1. 安装 Ollama 工具2. 部署 DeepSeek-R1 模型3. API使用4. 配置图形化交互界面(可选)5. 使用与注意事项 一、硬件配置需求 不同版本的 DeepSeek-R1 模型参数量不同,对硬件资源的要求也不尽相同。…...
通过Ollama本地部署DeepSeek R1以及简单使用的教程(超详细)
本文介绍了在Windows环境下,通过Ollama来本地部署DeepSeek R1。该问包含了Ollama的下载、安装、安装目录迁移、大模型存储位置修改、下载DeepSeek以及通过Web UI来对话等相关内容。 1、🥇下载Ollama 首先我们到Ollama官网去下载安装包,此处我…...
css实现长尾箭头(夹角小于45度的)
1. 长尾夹角小于45度的箭头 代码 //h5<div class"singleArrow"></div>//css .singleArrow {width: 150px;height: 1px;position: relative;background-color: #15ff00;/* transform: rotate(-40deg); */ /* 旋转角度 */}.singleArrow::after{ // 成品-有…...
封装descriptions组件,描述,灵活
效果 1、组件1,dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...
OC-Block
关于OC中的block作为属性时,为什么要要用copy修饰 property (nonatomic, copy) void (^completionBlock)(void);很多文章包括AI都会给出类似结论 Block 默认分配在栈上,如果没有 copy,当方法退出后,Block 会被销毁。使用 copy 修…...
关于知识蒸馏的概念原理以及常见方法
1. 概念与原理 知识蒸馏的基本定义 知识蒸馏(Knowledge Distillation) 是一种将模型压缩与迁移学习结合的技术:它利用预先训练好的大模型(通常参数量大、精度高、计算开销大)指导一个更轻量(参数量小、推理速度快)的学生模型进行训练,从而在保持模型精度的同时显著减少…...
C++轻量级桌面GUI库FLTK
C轻量级桌面GUI库FLTK Screenshots - Fast Light Toolkit (FLTK) 这里写个备忘录,可以参考一下....
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...

