1. 程式人生 > 實用技巧 >關於結構體建構函式使用總結

關於結構體建構函式使用總結

三種結構體初始化方法

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(int
a, 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

發現與預設的一樣結果證明三種賦值方法都起了作用, 好了就寫到這裡.

原文地址(https://www.cnblogs.com/wlw-x/p/11566191.html)