c++笔记
C++结构体赋值
C++ 中,可以在结构体中对数据进行赋值,赋值方式和限制需要注意
直接在成员声明时初始化(C++11 及以后支持)
C++11 引入了非静态成员初始化器,允许在结构体定义时直接为成员指定默认值,语法类似变量初始化:
1 | struct MyStruct { |
创建结构体对象时,若未显式赋值,成员会使用这些默认值:
1 | MyStruct s; |
通过构造函数赋值(最常用方式)
C++ 结构体可以像类一样定义构造函数,在构造函数中对成员进行初始化或赋值。这是更灵活的方式,支持根据参数动态设置值:结构体(struct)不仅可以包含数据成员,还可以定义各种函数,包括成员函数、构造函数、析构函数、静态函数等,这一点与类(class)几乎完全一致。
1 | struct Person { |
使用初始化列表(更高效的初始化方式)
构造函数中可以通过初始化列表直接初始化成员(而非赋值),性能更优(尤其对于类类型成员)
1 | struct Point { |
静态成员的初始化(需在结构体外部定义)
若结构体包含静态成员(属于整个结构体,而非某个对象),其初始化必须在结构体外部进行(类内只能声明):
1 | struct Test { |
- 结构体与类的核心区别仅在于默认访问权限(
struct默认为public,class默认为private),其他功能完全一致。
引用和拷贝
引用和拷贝是传递数据的两种核心方式,它们的选择取决于场景需求;而函数重载可以根据参数是引用还是拷贝,实现不同逻辑。
- 引用(
&):变量的 “别名”,指向原始数据的内存地址,操作引用等同于操作原始数据(无内存拷贝)。 - 例:
int a = 10; int& b = a;中,b是a的引用,修改b会同时改变a。 - 拷贝:创建原始数据的副本,新变量与原始数据占用独立内存,修改拷贝不影响原始数据(有内存开销)。
- 例:
int a = 10; int b = a;中,b是a的拷贝,修改b不影响a。