最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++淺析構(gòu)造函數(shù)的特性

 更新時(shí)間:2022年07月08日 08:55:39   作者:幻荼  
構(gòu)造函數(shù)主要作用在于創(chuàng)建對(duì)象時(shí)為對(duì)象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動(dòng)調(diào)用,無須手動(dòng)調(diào)用;析構(gòu)函數(shù)主要作用在于對(duì)象銷毀前系統(tǒng)自動(dòng)調(diào)用,執(zhí)行一 些清理工作

構(gòu)造函數(shù)的概念

構(gòu)造函數(shù)是一個(gè)特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對(duì)象時(shí)由編譯器自動(dòng)調(diào)用,保證每個(gè)數(shù)據(jù)成員都有一個(gè)合適的初始值,并且在對(duì)象的生命周期內(nèi)只調(diào)用一次。

構(gòu)造函數(shù)的特性

(1)函數(shù)名與類名相同。

(2)無返回值。

(3)編譯器自動(dòng)調(diào)用對(duì)應(yīng)的構(gòu)造函數(shù)。

(4)構(gòu)造函數(shù)可以重載。

我們這里直接舉一個(gè)例子

#include<iostream>
using namespace std;
class Data
{
public:
	Data()
	{
		cout << "Date()" << this << endl;
	}
	void InitData(int year = 1, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void PrintfData()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Data d1,d2;
	d1.InitData(2022,5,21);
	d1.PrintfData();
	return 0;
}

于是得到的的結(jié)果為:

只能有一個(gè)構(gòu)造函數(shù)

無參的構(gòu)造函數(shù)和全缺省的構(gòu)造函數(shù)都稱為默認(rèn)構(gòu)造函數(shù),并且默認(rèn)構(gòu)造函數(shù)只能有一個(gè)。

下面舉一個(gè)錯(cuò)誤案例:

#include<iostream>
using namespace std;
class Data
{
public:
	Data()
	{
		cout << "Date()" << this << endl;
	}
Data()
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void InitData(int year = 1, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void PrintfData()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Data d1
	return 0;
}

上面的代碼中,有兩個(gè)默認(rèn)的構(gòu)造函數(shù),因?yàn)椴粠?shù)的構(gòu)造函數(shù)和全缺省的構(gòu)造函數(shù)都被看為默認(rèn)的構(gòu)造函數(shù),所以說,現(xiàn)在有兩個(gè)構(gòu)造函數(shù),編譯器不知道到底要去調(diào)用哪個(gè)構(gòu)造函數(shù),所以說,就會(huì)報(bào)錯(cuò),所以我們刪除一個(gè)就可以了。

關(guān)于編譯器生成的默認(rèn)成員函數(shù),很多人會(huì)有疑惑:在我們不實(shí)現(xiàn)構(gòu)造函數(shù)的情況下,編譯器會(huì)生成默認(rèn)的構(gòu)造函數(shù)。但是看起來默認(rèn)構(gòu)造函數(shù)又沒什么用?對(duì)象調(diào)用了編譯器生成的默認(rèn)構(gòu)造函數(shù),但是對(duì)象year/month/_day,依舊是隨機(jī)值。也就說在這里編譯器生成的默認(rèn)構(gòu)造函數(shù)并沒有什么用?

解答:C++把類型分成內(nèi)置類型(基本類型)和自定義類型。內(nèi)置類型就是語法已經(jīng)定義好的類型:如int/char...,自定義類型就是我們使用class/struct/union自己定義的類型,看看下面的程序,就發(fā)發(fā)現(xiàn)編譯器生成默認(rèn)的構(gòu)造函數(shù)會(huì)對(duì)自定類型成員_t調(diào)用的它的默認(rèn)成員函數(shù)

class Time
{
public:
	Time()
	{
		cout << "Time()" << endl;
		_hour = 0;
		_minute = 0;
		_second = 0;
	}
private:
	int _hour;
	int _minute;
	int _second;
};
class Date
{
private:
	// 基本類型(內(nèi)置類型)
	int _year;
	int _month;
	int _day;
	// 自定義類型
	Time _t;
};
int main()
{
	Date d;
	return 0;
}

什么意思呢,就是編譯器會(huì)不管int,char這種基本類型,而會(huì)去管自定義類型

這是輸出的結(jié)果

到此這篇關(guān)于C++淺析構(gòu)造函數(shù)的特性的文章就介紹到這了,更多相關(guān)C++構(gòu)造函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析C++元組tuple類型

    淺析C++元組tuple類型

    元組tuple是C++的一個(gè)模板,不同tuple類型的成員類型也不相同,但是一個(gè)tuple可以有任意數(shù)量的成員,今天通過本文給大家介紹C++元組tuple類型,感興趣的朋友一起看看吧
    2022-06-06
  • C++ Coroutine簡單學(xué)習(xí)教程

    C++ Coroutine簡單學(xué)習(xí)教程

    這篇文章主要為大家詳細(xì)介紹了C++ Coroutine的簡單學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語言中memcpy 函數(shù)的用法詳解

    C語言中memcpy 函數(shù)的用法詳解

    這篇文章主要介紹了C語言中memcpy 函數(shù)的用法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C/C++編譯器GCC下的常用編譯命令總結(jié)

    C/C++編譯器GCC下的常用編譯命令總結(jié)

    這篇文章主要介紹了C/C++編譯器GCC下的常用編譯命令總結(jié),本文的示例環(huán)境為Linux系統(tǒng),需要的朋友可以參考下
    2015-08-08
  • C++實(shí)現(xiàn)小型復(fù)數(shù)計(jì)算器

    C++實(shí)現(xiàn)小型復(fù)數(shù)計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)小型復(fù)數(shù)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 淺談單調(diào)隊(duì)列、單調(diào)棧

    淺談單調(diào)隊(duì)列、單調(diào)棧

    其實(shí),單調(diào)隊(duì)列和單調(diào)棧是類似的,在我看來,這兩個(gè)東西只是名字不一樣 - - ! 比較容易想的一道題啦! 首先,這題的兩個(gè)關(guān)鍵點(diǎn): 1、區(qū)間的和。這個(gè)簡單,地球人都知道! 2、區(qū)間的最小值。
    2015-07-07
  • C語言實(shí)現(xiàn)一個(gè)簡單的掃雷游戲

    C語言實(shí)現(xiàn)一個(gè)簡單的掃雷游戲

    掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來詳解每一步分析
    2021-10-10
  • C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng)

    C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c++ base64編解碼使用示例

    c++ base64編解碼使用示例

    這篇文章主要介紹了c++的base64編解碼使用示例,需要的朋友可以參考下
    2014-02-02
  • 詳解C++中new運(yùn)算符和delete運(yùn)算符的使用

    詳解C++中new運(yùn)算符和delete運(yùn)算符的使用

    這篇文章主要介紹了C++中new運(yùn)算符和delete運(yùn)算符的使用,文章來自于微軟開發(fā)者文檔,因而根據(jù)Visual C++的一些特性來進(jìn)行講解,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

肇东市| 维西| 禹州市| 利川市| 墨江| 杂多县| 蚌埠市| 张掖市| 略阳县| 西华县| 庆城县| 固镇县| 长汀县| 邛崃市| 呈贡县| 元江| 汽车| 柘城县| 资中县| 上蔡县| 闽清县| 尚义县| 且末县| 应城市| 大安市| 哈尔滨市| 桓台县| 徐汇区| 山丹县| 华坪县| 盖州市| 两当县| 镇平县| 日喀则市| 浏阳市| 铅山县| 新沂市| 封开县| 古交市| 罗源县| 玉门市|