關於結構體建構函式使用總結
阿新 • • 發佈:2020-09-18
三種結構體初始化方法
1 預設無參的建構函式
2結構體自帶的預設建構函式
3 帶引數的自定義的建構函式
struct node{ int data; string str; char x; node() :x(), str(), data(){} //無引數的建構函式陣列初始化時呼叫 node(int a, string b, char c) :data(a), str(b), x(c){}//有參構造 void init(int a, string b, char c){//自定義的建構函式 this->data = a; this->str = b;this->x = c; } }N[10];
**要點**:
在建立結構體陣列時, 如果只寫了帶引數的建構函式將會出現陣列無法初始化的錯誤!!!各位同學要牢記呀!
下面是一個比較安全的帶構造的結構體示例
下面我們分別使用預設構造和有參構造,以及自己手動寫的初始化函式進行會結構體賦值
並觀察結果
測試程式碼如下:
#include <iostream> #include <string> using namespace std; struct node{ int data; string str; char x; //自己寫的初始化函式 void init(inta, string b, char c){ this->data = a; this->str = b; this->x = c; } node() :x(), str(), data(){} node(int a, string b, char c) :x(c), str(b), data(a){} }N\[10\]; int main() { N\[0\] = { 1,"hello",'c' }; N\[1\] = { 2,"c++",'d' }; //無參預設結構體構造體函式 N\[2\].init(3, "java", 'e'); //自定義初始化函式的呼叫 N\[3\] = node(4, "python", 'f'); //有引數結構體建構函式 N\[4\] = { 5,"python3",'p' }; //現在我們開始列印觀察是否已經存入 for (int i = 0; i < 5; i++){ cout << N\[i\].data << " " << N\[i\].str << " " << N\[i\].x << endl; } system("pause"); return 0; }
**輸出結果**
1 hello c 2 c++ d 3 java e 4 python f 5 python3 p
發現與預設的一樣結果證明三種賦值方法都起了作用, 好了就寫到這裡.