C++ - 結構體構造函數使用總結


關於結構體構造函數使用總結

  • 三種結構體初始化方法

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){}//有參構造
}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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM