C++特有的变量类型与特性

C++在C语言基础上扩展了多种变量类型和特性,以下是其特有的部分:

bool类型

C++引入的布尔类型,取值为truefalse,占用1字节空间。
示例:

bool isReady = true;

wchar_t宽字符类型

用于存储Unicode或宽字符集,大小由编译器实现决定(通常2或4字节)。
示例:

wchar_t wideChar = L'あ';

引用类型(Reference)

变量的别名,必须在初始化时绑定到对象,无法重新绑定。
示例:

int x = 10;
int& ref = x;  // ref是x的别名

nullptr关键字

类型安全的空指针常量,替代C中的NULL宏。
示例:

int* ptr = nullptr;

类成员变量

通过类(class/struct)定义的成员变量,支持访问控制(public/private/protected)。
示例:

class MyClass {
private:
    int privateVar;
public:
    double publicVar;
};

静态成员变量

类的所有实例共享的变量,需在类外单独定义。
示例:

class Counter {
public:
    static int count;  // 声明
};
int Counter::count = 0;  // 定义

常量表达式变量(constexpr

编译期可计算的常量,优于const
示例:

constexpr int arraySize = 100;
int arr[arraySize];

结构化绑定(C++17)

将结构体或数组成员解包到变量。
示例:

auto [x, y] = std::make_pair(1, 2.0);

线程局部存储(thread_local

每个线程拥有独立的变量实例。
示例:

thread_local int threadVar = 0;

初始化列表(C++11)

统一初始化语法,支持容器初始化。
示例:

std::vector<int> vec = {1, 2, 3};

auto类型推导(C++11)

编译器自动推断变量类型。
示例:

auto str = "Hello";  // 推导为const char*

Lambda捕获变量

Lambda表达式可捕获外部作用域的变量。
示例:

int a = 1;
auto lambda = [a](int b) { return a + b; };

关键区别点

  • 引用 vs 指针:引用不可为空且不能重绑定,指针可重新指向。
  • constexpr vs const:前者要求编译期确定值,后者运行期也可初始化。
  • 类成员变量支持封装,而C仅有结构体且全部公开。

这些特性使C++在类型安全、抽象能力和性能控制上优于C语言。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐