建構子初始化列表
語法
建構子初始化列表(Initialization list of constructors),因為不知道繁體中文的名稱,先以大陸的名稱來替代。
- 成員變數已經在初始化列表,不應該再建構子中再設值
語法如下
類別名(資料型態 參數名1, 資料型態 參數名2, ...):成員變數1(參數名1),成員變數2(參數名2), ... {}
下方有參數的建構子,使用初始化列表,初使化成員變數。
程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Student {
public:
string m_name;
int m_age;
public:
Student() {
cout << "沒參數建構子" << endl;
}
Student(string name, int age):m_name(name),m_age(age) {
cout << "初始化列表建構子" << endl;
}
~Student() {
cout << "解構子" << endl;
}
void print() {
cout << "name: " << m_name << endl;
cout << "age: " << m_age << endl;
}
};
int main() {
Student s1("cici", 18);
s1.print();
return 0;
}
初始化列表建構子
name: cici
age: 18
解構子
初始化列表與運算式
下方有參數的建構子,使用初始化列表並加上運算式,初使化成員變數。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Student {
public:
string m_name;
int m_age;
public:
Student() {
cout << "沒參數建構子" << endl;
}
Student(string name, int age):m_name("漂亮的" + name),m_age(age + 10) {
cout << "初始化列表建構子" << endl;
}
~Student() {
cout << "解構子" << endl;
}
void print() {
cout << "name: " << m_name << endl;
cout << "age: " << m_age << endl;
}
};
int main() {
Student s1("cici", 18);
s1.print();
return 0;
}
初始化列表建構子
name: 漂亮的cici
age: 28
解構子