欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++ 入門——淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)

 更新時間:2020年08月31日 08:44:41   作者:從此啟程  
這篇文章主要介紹了c++ 淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)資料,幫助大家入門c++ 編程,感興趣的朋友可以了解下

前文回顧

本文檔環(huán)境基于Vscode + GCC + CodeRunner

關(guān)于C++的環(huán)境搭建請參考下面鏈接:

http://www.dbjr.com.cn/article/186542.htm

由于本人具有C#開發(fā)經(jīng)驗,部分相同的知識就不再贅述了。只列一下需要記錄的知識。

HelloWorld

cout 代表輸出<<

cin 代表輸入 >>

endl;代表換行,清空緩沖區(qū)。

#include <iostream>
int main()
{
 std::cout << "Helloworld22222222222!" << std::endl;
 return 0;
}

RunCode結(jié)果如下:

PS E:\LearchC\TestOne> cd "e:\LearchC\TestOne\" ; if ($?) { g++ -fexec-charset=GBK -std=c++11 1-HelloWord.cpp -o a.exe } ; if ($?) { ./a.exe }
Helloworld22222222222!

使用命名空間

#include <iostream>
using namespace std;
int main()
{
 cout << "請輸入一個數(shù)字!" << endl;
 int a;
 cin >> a;
 cout << "你輸入的是" << a << endl;
 return 0;
}

RunCode結(jié)果如下:

請輸入一個數(shù)字!
2
你輸入的是2

構(gòu)造函數(shù)和析構(gòu)函數(shù)

  • 構(gòu)造函數(shù)的作用:用于新建對象的初始化工作。
  • 析構(gòu)函數(shù)的作用:用于在撤銷對象前,完成一些清理工作,比如:釋放內(nèi)存等。

每當創(chuàng)建對象時,需要添加初始化代碼時,則需要定義自己的構(gòu)造函數(shù);而對象撤銷時,需要自己添加清理工作的代碼時,則需要定義自己的析構(gòu)函數(shù)。

按參數(shù)類型

  • 無參構(gòu)造函數(shù)
  • 有參構(gòu)造函數(shù)
  • copy構(gòu)造函數(shù)
#include <iostream>
using namespace std;
class Person
{
public:
 int _a;

public:
 //無參構(gòu)造函數(shù)
 Person()
 {
 cout << "Person 構(gòu)造函數(shù)的調(diào)用" << endl;
 }
 //有參構(gòu)造函數(shù)
 Person(int a)
 {
 _a = a;
 cout << "Person構(gòu)造函數(shù)A:" << a << endl;
 }
 Person(const Person &p)
 {
 _a = p._a;
 cout << "PersonCopay構(gòu)造函數(shù)_a:" << _a << endl;
 }
 //析構(gòu)函數(shù)
 ~Person()
 {
 cout << "Person 析構(gòu)函數(shù)的調(diào)用" << endl;
 }
};
void test(){
 Person p1;
}
int main(){
 test();
system("pause");
return 0;
}

RunCode結(jié)果如下:

test方法結(jié)束后,會調(diào)用析構(gòu)函數(shù)。

Person 構(gòu)造函數(shù)的調(diào)用
Person 析構(gòu)函數(shù)的調(diào)用

改變調(diào)用方式,在main里調(diào)用,將只出現(xiàn)調(diào)用構(gòu)造函數(shù),因為main函數(shù)后面pause暫停,不會釋放Person的析構(gòu)。

int main(){
Person p1;
system("pause");
return 0;
}

RunCode 結(jié)果如下

Person 構(gòu)造函數(shù)的調(diào)用

按調(diào)用方式

  • 括號法
  • 顯示調(diào)用
  • 隱式調(diào)用
void test01()
{

 //括號法
 // Person p1; //默認
 // Person p2(2); //有參
 // Person p3(p2); //copy構(gòu)造函數(shù)
 // cout << "p2的age:" << p2._a << endl;
 // cout << "p3的age:" << p3._a << endl;

 //調(diào)用默認函數(shù)不能加()
 //因為下面這行代碼編譯器會認為是函數(shù)的聲明,不會創(chuàng)建對象
 //Person p4();

 //顯示法
 // Person p1;
 // Person p2 = Person(10);
 // Person p3 = Person(p2);

 // Person(10); //匿名對象,這行執(zhí)行完畢,立即釋放
 //注意事項2:不要用copy構(gòu)造函數(shù)初始化匿名對象,編譯器會認為Person (p3)==Person p3;
 //Person(p3);
 //cout << "P2-Age:" << p3._a << endl;

 //隱式轉(zhuǎn)換法
 Person p1 = 10; //相當于寫了Person p1=Person(10)
 Person p2 = p1; //相當于copy構(gòu)造
}

注意事項:

不要用copy構(gòu)造函數(shù)初始化匿名對象;

調(diào)用默認函數(shù)不能加();

調(diào)用規(guī)則

默認情況下,C++編譯器至少給一個類添加三個函數(shù)
1.默認構(gòu)造函數(shù)(無參)
2.默認析構(gòu)函數(shù)
3.默認拷貝構(gòu)造函數(shù),對屬性進行值拷貝

構(gòu)造函數(shù)調(diào)用規(guī)則如下:

  • 如果用戶定義有參構(gòu)造函數(shù),c++不在提供默認無參噶構(gòu)造函數(shù)
  • 如果用戶定義拷貝構(gòu)造函數(shù),c++不會再提供其他構(gòu)造函數(shù)

總結(jié)

第三種隱式轉(zhuǎn)換法,我看的有點頭暈,寫法太多。java和C#在構(gòu)造函數(shù)這塊調(diào)用方法做了簡化,只能用new來創(chuàng)建對象。

正所謂:華山自古一條道,好好的走吧!

以上就是c++ 入門——淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)的詳細內(nèi)容,更多關(guān)于c++ 構(gòu)造函數(shù)和析構(gòu)函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論