C语言结构体初始化
- 定义:
struct 结构体名
{ //成员列表
类型名 成员名
} //变量列表
-
使用 “.” ,调用结构体各项成员,完成基本操作
-
结构体数组初始化
#include<iostream>
using namespace std;
struct s1{
int a;
double b;
char c;
}data1[2]{{1,2},{3,4}}; // 等价于{,,,,}
struct s2{
int a;
double b;
}data2[2]{1,2,3,4}; // 等价于{,,,,}
int main(){
struct s1 p=data1[1];
cout<<p.a<<endl;
struct s2 q=data2[1];
cout<<q.a<<endl;
return 0;
}
输出结果(相同)
C++初始化列表
构造函数内容:(参数列表,函数体,初始化列表)
- 初始化列表:以冒号开头,后跟一系列以逗号分隔的初始化字段
//以struct为例(唯一区别是默认的访问性不同)
struct foo{
int numb;
string str;
foo(int a,string s):numb(a),str(s); //初始化成员列表
};
以下几种情况必须使用初始化列表:
以下几种情况时必须使用初始化列表
- 常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面
- 引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面
- 没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化。