一文帶你學(xué)習(xí)一下C++中的構(gòu)造函數(shù)
C++構(gòu)造函數(shù)學(xué)習(xí)
構(gòu)造函數(shù)是一種特殊的函數(shù),它用于在創(chuàng)建對(duì)象時(shí)初始化對(duì)象的值。所有的類都有構(gòu)造函數(shù),但如果沒(méi)有自定義,則會(huì)使用默認(rèn)構(gòu)造函數(shù)。在本文中,我們將學(xué)習(xí)C++的構(gòu)造函數(shù)以及如何使用它們來(lái)創(chuàng)建對(duì)象。
構(gòu)造函數(shù)的基本語(yǔ)法是在聲明類時(shí)定義,語(yǔ)法如下:
class MyClass{
public:
MyClass(); //構(gòu)造函數(shù)的聲明
private:
// 成員變量聲明
};
MyClass::MyClass(){
// 構(gòu)造函數(shù)的具體實(shí)現(xiàn)
}MyClass()是構(gòu)造函數(shù)的名稱,它與類名相同且沒(méi)有返回類型。構(gòu)造函數(shù)的主體用大括號(hào)包括,并進(jìn)行初始化或其它操作。
默認(rèn)構(gòu)造函數(shù)是一種不帶任何參數(shù)的構(gòu)造函數(shù),如果沒(méi)有定義任何構(gòu)造函數(shù),則編譯器將使用默認(rèn)構(gòu)造函數(shù)。例如:
class MyClass{
public:
// 默認(rèn)構(gòu)造函數(shù)
private:
// 成員變量聲明
};
MyClass::MyClass(){
// 參數(shù)為空
}下面介紹一些常見的構(gòu)造函數(shù)用法。
1.帶參數(shù)的構(gòu)造函數(shù)
帶參數(shù)的構(gòu)造函數(shù)允許在實(shí)例化對(duì)象時(shí)傳遞參數(shù)。例如,下面的代碼演示了如何使用帶參數(shù)的構(gòu)造函數(shù)來(lái)初始化姓名和年齡:
#include <iostream>
using namespace std;
class Person{
public:
string name;
int age;
Person(string _name, int _age) {
name = _name;
age = _age;
}
};
int main() {
Person p1("john", 18);
cout << "name: " << p1.name << endl;
cout << "age: " << p1.age << endl;
return 0;
}2.多個(gè)構(gòu)造函數(shù)
一個(gè)類可以有多個(gè)構(gòu)造函數(shù),每個(gè)構(gòu)造函數(shù)可以有不同的參數(shù)列表。例如,以下代碼演示了一個(gè)包含兩個(gè)構(gòu)造函數(shù)的類:
#include <iostream>
using namespace std;
class Person{
public:
string name;
int age;
Person(string _name, int _age) {
name = _name;
age = _age;
}
Person() {
name = "unknow";
age = 0;
}
};
int main() {
Person p1("john", 18);
cout << "name: " << p1.name << endl;
cout << "age: " << p1.age << endl;
Person p2;
cout << "name: " << p2.name << endl;
cout << "age: " << p2.age << endl;
return 0;
}3.拷貝構(gòu)造函數(shù)
拷貝構(gòu)造函數(shù)是帶有單個(gè)參數(shù)的構(gòu)造函數(shù),它接受同一類型的對(duì)象作為輸入,并初始化一個(gè)新的對(duì)象。例如,以下代碼演示了一個(gè)包含拷貝構(gòu)造函數(shù)的類:
#include <iostream>
using namespace std;
class Person{
public:
string name;
int age;
Person() {
name = "unknow";
age = 0;
}
Person(const Person &p) {
name = p.name;
age = p.age;
}
};
int main() {
Person p1("john", 18);
Person p2(p1);
cout << "name: " << p2.name << endl;
cout << "age: " << p2.age << endl;
return 0;
}以上就是一文帶你學(xué)習(xí)一下C++中的構(gòu)造函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于C++構(gòu)造函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)圖的創(chuàng)建與遍歷實(shí)驗(yàn)示例
這篇文章主要為大家介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)圖的創(chuàng)建與遍歷實(shí)驗(yàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
VSCode Linux的C++代碼格式化配置的實(shí)現(xiàn)
動(dòng)格式化代碼容易出現(xiàn)錯(cuò)誤,特別是當(dāng)代碼量較大時(shí),使用自動(dòng)格式化可以減少這種錯(cuò)誤的風(fēng)險(xiǎn),本文主要介紹了VSCode Linux的C++代碼格式化配置的實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
C++實(shí)現(xiàn)LeetCode(21.混合插入有序鏈表)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(21.混合插入有序鏈表),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值的相關(guān)資料,該代碼通過(guò)定義一個(gè)名為L(zhǎng)argestTow的函數(shù)來(lái)找出數(shù)組中的最大值和次大值,并將結(jié)果分別存入指針?biāo)赶虻膬?nèi)存單元中,需要的朋友可以參考下2024-11-11
c++臨時(shí)對(duì)象導(dǎo)致的生命周期問(wèn)題
對(duì)象的生命周期是c++中非常重要的概念,它直接決定了你的程序是否正確以及是否存在安全問(wèn)題,這篇文章主要介紹了c++臨時(shí)對(duì)象導(dǎo)致的生命周期問(wèn)題 ,需要的朋友可以參考下2024-07-07
Qt實(shí)現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié)
在Qt中提供了QSqlTableModel模型類,它為開發(fā)者提供了一種直觀的方式來(lái)與數(shù)據(jù)庫(kù)表格進(jìn)行交互,本文就來(lái)介紹一下Qt實(shí)現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié),感興趣的可以了解一下2023-12-12

