用构造函数来完成结构体的初始化
生活随笔
收集整理的這篇文章主要介紹了
用构造函数来完成结构体的初始化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
說到結構體的初始化,人們會自然的想到先定義一個結構體變量,然后對其中的元素逐一賦值,以達到初始化的目的。
但是如果這樣做,當結構體內變量很多時并不方便,此處介紹一種使用“構造函數”的方法來進行初始化,供讀者學習。
所謂構造函數就是用來初始化結構體的一種函數,它直接定義在結構體中。
構造函數的一個特點是它不需要寫返回類型,且函數名與結構體名相同。
例子:
struct student {int id;char name;//默認生成的構造函數student(){} };“ student(){} ”就是默認生成的構造函數,可以看到這個構造函數的函數名和結構體類型名相同;它沒有返回類型,所以student前面沒有寫東西;它沒有參數,所以小括號內是空的;它也沒有函數體,因此花括號內也是空的。由于這個構造函數的存在,才可以直接定義student類型的變量而不進行初始化(因為它沒有讓用戶提供任何初始化參數)
那么,如果想要自己手動提供id和name的初始化參數,應該怎么做?
struct student {int id;char name;//下面的參數用以對結構體內部變量進行賦值student(int _id,char _name){id=_id;name=_name;} };當然構造函數也可以簡寫成一行
struct student {int id;char name;//下面的參數用以對結構體內部變量進行賦值student(int _id,char _name) : id(_id),name(_nmae) {} };
注意:如果自己重新定義了構造函數,則不能不經初始化就定義構造函數變量。
也就是說默認生成的構造函數 " student(){} " 此時已經被覆蓋了。為了既能不初始化就定義結構體變量,
又能享用初始化帶來的便捷,可以把 " student(){} " 手動加上。這意味著,只要參數個數和類型不完全相同,
就可以定義任意多個構造函數,以適應不同的初始化場合。
例如:
總結
以上是生活随笔為你收集整理的用构造函数来完成结构体的初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻松搞懂sscanf和sprintf
- 下一篇: 算法笔记 第三章