Skip to content
B

C++语言快速入门

安装 C++ 编译环境

bash
# $ sudo subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
$ sudo dnf install -y gcc gcc-c++ make
# 或者安装完整的开发工具组(包含更多工具如gdb、git等)
$ sudo dnf groupinstall -y "Development Tools"
# 检查安装
$ gcc --version
$ g++ --version
$ make --version

第一个 C++ 程序

c++
// main.cpp

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}
  • 执行
bash
$ g++ main.cpp -o main    # 编译
$ ./main                  # 执行
# 执行权限
$ ll
$ chmod +x ./main

基本语法

关键字

第一列第二列第三列第四列
asmelsenewthis
autoenumoperatorthrow
boolexplicitprivatetrue
breakexportprotectedtry
caseexternpublictypedef
catchfalseregistertypeid
charfloatreinterpret_casttypename
classforreturnunion
constfriendshortunsigned
const_castgotosignedusing
continueifsizeofvirtual
defaultinlinestaticvoid
deleteintstatic_castvolatile
dolongstructwchar_t
doublemutableswitchwhile
dynamic_castnamespacetemplate

注释

提示

  • 程序的注释是解释性语句,您可以在 C++ 代码中包含注释来提高源代码的可读性。所有的编程语言都允许某种形式的注释。
  • C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。

C++ 注释一般有两种:

  • // 一般用于单行注释。

  • /* 注释内容 */ 一般用于多行注释。

数据类型

信息

变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留存放某种类型数据的空间。

操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

基本的内置类型

C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t

其实 wchar_t 是这样来的,所以 wchar_t 实际上的空间是和 short int 一样。

c++
typedef short int wchar_t;

修饰符

修饰符描述示例
signed表示有符号类型(默认)signed int x = -10;
unsigned表示无符号类型unsigned int y = 10;
short表示短整型short int z = 100;
long表示长整型long int a = 100000;
const表示常量,值不可修改const int b = 5;
volatile表示变量可能被意外修改,禁止编译器优化volatile int c = 10;
mutable表示类成员可以在 const 对象中修改mutable int counter;

关于各种数据类型的长度可自行查看 菜鸟教程

C++ 11 新增类型

数据类型描述示例
auto自动类型推断auto x = 10;
decltype获取表达式的类型decltype(x) y = 20;
nullptr空指针常量int* ptr = nullptr;
std::initializer_list初始化列表类型std::initializer_list<int> list = {1, 2, 3};
std::tuple元组类型,可以存储多个不同类型的值std::tuple<int, float, char> t(1, 2.0, 'a');

派生数据类型

数据类型描述示例
数组相同类型元素的集合int arr[5] = {1, 2, 3, 4, 5};
指针存储变量内存地址的类型int* ptr = &x;
引用变量的别名int& ref = x;
函数函数类型,表示函数的签名int func(int a, int b);
结构体用户定义的数据类型,可以包含多个不同类型的成员struct Point { int x; int y; };
用户定义的数据类型,支持封装、继承和多态class MyClass { ... };
联合体多个成员共享同一块内存union Data { int i; float f; };
枚举用户定义的整数常量集合enum Color { RED, GREEN, BLUE };

类型别名

别名描述示例
typedef为现有类型定义别名typedef int MyInt;
using为现有类型定义别名(C++11 引入)using MyInt = int;

标准库类型

数据类型描述示例
std::string字符串类型std::string s = "Hello";
std::vector动态数组std::vector<int> v = {1, 2, 3};
std::array固定大小数组(C++11 引入) std::array<int, 3> a = {1, 2, 3};
std::pair存储两个值的容器std::pair<int, float> p(1, 2.0);
std::map键值对容器std::map<int, std::string> m;
std::set唯一值集合std::set<int> s = {1, 2, 3};

typedef 声明