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语言的魅力