我用C++入门教程,学会了基础编程

C++ 第一个程序

C++兼容大多数C语法,源文件后缀通常使用.cpp。Windows环境下可使用Visual Studio编译器,Linux环境下推荐使用g++编译器。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
    cout << "hello world\n" << endl;
    return 0;
}

C++98 关键字分类

基本类型关键字包括void、char、int、float、double、bool、wchar_t。修饰符有long、short、signed、unsigned。存储类型关键字包含auto、register、static、extern、mutable。常量/易变关键字为const、volatile。

类与对象相关关键字有class、struct、union、public、protected、private、friend、this、virtual。函数相关关键字包括inline、operator、sizeof。命名空间/模板关键字为namespace、using、template、typename。

流程控制关键字包含for、do、while、break、continue、goto、return、if、else、switch、case、default、enum。异常处理关键字有try、catch、throw。内存管理关键字为new、delete。类型转换关键字包括const_cast、static_cast、dynamic_cast、reinterpret_cast。

命名空间使用规范

命名空间用于隔离标识符,防止命名冲突。标准库内容位于std命名空间内。定义格式为namespace A {...},支持嵌套定义,跨文件的同名命名空间会自动合并。

使用方式有三种:显式限定如my_ns::Max();using声明如using my_ns::Max;using指令如using namespace my_ns(便捷但易造成命名污染,头文件中禁止使用)。实际项目中建议使用std::前缀或仅引入必要成员:using std::cout; using std::endl;。

输入输出处理

标准输入输出头文件为<iostream>。std::cin使用提取运算符>>,std::cout使用插入运算符<<,std::endl实现换行并刷新缓冲区。C风格的printf/scanf在格式控制方面更灵活,两者可以混合使用。

缺省参数规则

缺省参数在调用时未传参则使用默认值。半缺省参数必须从右向左连续给出。默认值应写在函数声明处,定义处不再重复。默认值必须是常量表达式或全局量,这是C语言不支持的特性。

示例:

cpp 复制代码
void Func1(int a=10, int b=20, int c=30);
void Func2(int a, int b=10, int c=20);

函数重载机制

同一作用域内,函数名相同但形参列表不同(参数个数/类型/顺序)构成重载。返回值类型不参与重载判定。C++编译器通过"名字修饰"技术(函数名+参数类型编码)在链接时区分重载函数。extern "C"可禁用C++名字修饰,保持C语言链接方式。

示例:

cpp 复制代码
extern "C" {
    void Func(int);
    int Add(int,int);
}

引用特性详解

引用是变量的别名,不独立占用存储空间。定义时必须初始化,支持多引用指向同一对象,绑定后不可更改。引用类型需与实体类型严格匹配,const引用有特殊规则。

const引用可以绑定const对象、普通对象、字面量和临时对象。当绑定类型转换产生的临时对象时,必须使用const引用。权限控制遵循"只能保持或缩小,不能放大"原则。

示例:

cpp 复制代码
void Swap(int& a, int& b);
void PrintBig(const vector<int>& v);  // 避免大对象拷贝

引用作为返回值时,禁止返回局部变量的引用。可以返回静态局部变量、全局变量、成员变量或传入参数的引用。优点在于避免拷贝开销,支持链式操作。

内联函数优化

内联函数在编译期展开,消除函数调用开销。适用于短小、频繁调用的非递归函数。inline关键字仅是建议,编译器可能忽略。定义通常放在头文件中,避免链接问题。

示例:

cpp 复制代码
inline int Add(int l, int r) { return l + r; }

宏的替代方案

宏在预处理期进行文本替换,存在类型不安全、难以调试等问题。正确写法需要多重括号保护:#define ADD(a,b) ((a)+(b))。C++推荐使用const/constexpr替代常量,inline替代短函数,using/typedef处理类型别名。

nullptr优势

C++11引入的nullptr是真正的指针空值关键字,仅能转换为指针类型,解决了与整型重载的二义性问题。应优先使用nullptr而非NULL或0。

示例:

cpp 复制代码
void f(int);
void f(int*);
f(nullptr);  // 明确调用f(int*)

工程实践建议

避免在项目中使用using namespace std,应显式限定或选择性引入。大对象传参使用const引用,需要修改参数时使用非常量引用。与C语言交互时使用extern "C"。小而频繁调用的函数考虑inline优化,复杂逻辑不宜强制内联。空指针表示统一使用nullptr。尽可能避免使用宏,优先选择类型安全的替代方案。

编程语言C++mobile.nmpengyangjidian.com++C语言的魅力

编程语言C++news.nmpengyangjidian.com++C语言的魅力

编程语言C++soft.nmpengyangjidian.com++C语言的魅力

编程语言C++www.share.nmpengyangjidian.com++C语言的魅力

编程语言C++map.nmpengyangjidian.com++C语言的魅力

编程语言C++www.blog.nmpengyangjidian.com++C语言的魅力

编程语言C++read.share.nmpengyangjidian.com++C语言的魅力

编程语言C++info.nmpengyangjidian.com++C语言的魅力

编程语言C++nmpengyangjidian.com++C语言的魅力

编程语言C++www.nmpengyangjidian.com++C语言的魅力

编程语言C++mobile.dayugame520.com++C语言的魅力

编程语言C++news.dayugame520.com++C语言的魅力

编程语言C++soft.dayugame520.com++C语言的魅力

编程语言C++www.share.dayugame520.com++C语言的魅力

编程语言C++map.dayugame520.com++C语言的魅力

编程语言C++www.blog.dayugame520.com++C语言的魅力

编程语言C++read.share.dayugame520.com++C语言的魅力

编程语言C++info.dayugame520.com++C语言的魅力

编程语言C++dayugame520.com++C语言的魅力

编程语言C++www.dayugame520.com++C语言的魅力

编程语言C++mobile.boen0731.com++C语言的魅力

编程语言C++news.boen0731.com++C语言的魅力

编程语言C++soft.boen0731.com++C语言的魅力

编程语言C++www.share.boen0731.com++C语言的魅力

编程语言C++map.boen0731.com++C语言的魅力

编程语言C++www.blog.boen0731.com++C语言的魅力

编程语言C++read.share.boen0731.com++C语言的魅力

编程语言C++info.boen0731.com++C语言的魅力

编程语言C++boen0731.com++C语言的魅力

编程语言C++www.boen0731.com++C语言的魅力

编程语言C++mobile.dl-freedom.com++C语言的魅力

编程语言C++news.dl-freedom.com++C语言的魅力

编程语言C++soft.dl-freedom.com++C语言的魅力

编程语言C++www.share.dl-freedom.com++C语言的魅力

编程语言C++map.dl-freedom.com++C语言的魅力

编程语言C++www.blog.dl-freedom.com++C语言的魅力

编程语言C++read.share.dl-freedom.com++C语言的魅力

编程语言C++info.dl-freedom.com++C语言的魅力

编程语言C++dl-freedom.com++C语言的魅力

编程语言C++www.dl-freedom.com++C语言的魅力

编程语言C++mobile.yaxinguanzhuang.com++C语言的魅力

编程语言C++news.yaxinguanzhuang.com++C语言的魅力

编程语言C++soft.yaxinguanzhuang.com++C语言的魅力

编程语言C++www.share.yaxinguanzhuang.com++C语言的魅力

编程语言C++map.yaxinguanzhuang.com++C语言的魅力

编程语言C++www.blog.yaxinguanzhuang.com++C语言的魅力

编程语言C++read.share.yaxinguanzhuang.com++C语言的魅力

编程语言C++info.yaxinguanzhuang.com++C语言的魅力

编程语言C++yaxinguanzhuang.com++C语言的魅力

编程语言C++www.yaxinguanzhuang.comC语言的魅力

编程语言C++mobile.zjtuzhi.com++C语言的魅力

编程语言C++news.zjtuzhi.com++C语言的魅力

编程语言C++soft.zjtuzhi.com++C语言的魅力

编程语言C++www.share.zjtuzhi.com++C语言的魅力

编程语言C++map.zjtuzhi.com++C语言的魅力

编程语言C++www.blog.zjtuzhi.com++C语言的魅力

编程语言C++read.share.zjtuzhi.com++C语言的魅力

编程语言C++info.zjtuzhi.com++C语言的魅力

编程语言C++zjtuzhi.com++C语言的魅力

编程语言C++www.zjtuzhi.com++C语言的魅力

编程语言C++mobile.hbqisen.com++C语言的魅力

编程语言C++news.hbqisen.com++C语言的魅力

编程语言C++soft.hbqisen.com++C语言的魅力

编程语言C++www.share.hbqisen.com++C语言的魅力

编程语言C++map.hbqisen.com++C语言的魅力

编程语言C++www.blog.hbqisen.com++C语言的魅力

编程语言C++read.share.hbqisen.com++C语言的魅力

编程语言C++info.hbqisen.com++C语言的魅力

编程语言C++hbqisen.com++C语言的魅力

编程语言C++www.hbqisen.com++C语言的魅力

编程语言C++mobile.daoios.com++C语言的魅力

编程语言C++news.daoios.com++C语言的魅力

编程语言C++soft.daoios.com++C语言的魅力

编程语言C++www.share.daoios.com++C语言的魅力

编程语言C++map.daoios.com++C语言的魅力

编程语言C++www.blog.daoios.com++C语言的魅力

编程语言C++read.share.daoios.com++C语言的魅力

编程语言C++info.daoios.com++C语言的魅力

编程语言C++daoios.com++C语言的魅力

编程语言C++www.daoios.com++C语言的魅力

编程语言C++mobile.ptjc8282.com++C语言的魅力

编程语言C++news.ptjc8282.com++C语言的魅力

编程语言C++soft.ptjc8282.com++C语言的魅力

编程语言C++www.share.ptjc8282.com++C语言的魅力

编程语言C++map.ptjc8282.com++C语言的魅力

编程语言C++www.blog.ptjc8282.com++C语言的魅力

编程语言C++read.share.ptjc8282.com++C语言的魅力

编程语言C++info.ptjc8282.com++C语言的魅力

编程语言C++ptjc8282.com++C语言的魅力

编程语言C++www.ptjc8282.com++C语言的魅力

相关推荐
h39742 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
夏幻灵3 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码3 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客4 小时前
vs 怎么根据dll 生成lib文件
c++·qt
bkspiderx5 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆5 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光5 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园5 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西6 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨6 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言