C++特有的变量
·
C++特有的变量类型与特性
C++在C语言基础上扩展了多种变量类型和特性,以下是其特有的部分:
bool类型
C++引入的布尔类型,取值为true或false,占用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 指针:引用不可为空且不能重绑定,指针可重新指向。
constexprvsconst:前者要求编译期确定值,后者运行期也可初始化。- 类成员变量支持封装,而C仅有结构体且全部公开。
这些特性使C++在类型安全、抽象能力和性能控制上优于C语言。
更多推荐



所有评论(0)