真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++---對象的構(gòu)造

一.對象的構(gòu)造(上)

Q:對象中成員變量的初始值是多少?

創(chuàng)新互聯(lián)是專業(yè)的新化網(wǎng)站建設(shè)公司,新化接單;提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新化網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

#include 

using namespace std;

class Test
{
    private:
        int i;
        int j;
    public:
        int getI()
        {
            return i;
        }
        int getJ()
        {
            return j;
        }
};

int main()
{
    Test t1;

    cout<<"t1.getI()="<

#include 

using namespace std;

class Test
{
    private:
        int i;
        int j;
    public:
        int getI()
        {
            return i;
        }
        int getJ()
        {
            return j;
        }
};

Test gt;

int main()
{
    cout<<"gt.getI()="<getI()="<getI()<getJ()="<getJ()<

結(jié)果如圖
C++---對象的構(gòu)造
小結(jié)
從程序設(shè)計(jì)的角度,對象只是變量
1.在棧上創(chuàng)建對象時(shí),成員變量初始為隨機(jī)值
2.在堆上創(chuàng)建對象時(shí),成員變量初始值為隨機(jī)值
3.在靜態(tài)區(qū)創(chuàng)建對象時(shí),成員變量初始值為0值

解決方案:
1.在類中提供一個(gè)public的intialize函數(shù)
2.對象創(chuàng)建后立即調(diào)用intialize函數(shù)進(jìn)行初始化
示例

#include 

using namespace std;

class Test
{
    private:
        int i;
        int j;
    public:
        int getI()
        {
            return i;
        }
        int getJ()
        {
            return j;
        }
        void initialize()
        {
            i = 1;
            j = 2;
        } 
};

Test gt;

int main()
{
    gt.initialize();
    cout<<"gt.getI()="<getI()="<getI()<getJ()="<getJ()<

運(yùn)行結(jié)果
C++---對象的構(gòu)造
Q:當(dāng)intialize的位置出現(xiàn)了改變的話,還會(huì)對其進(jìn)行初始化嗎
C++---對象的構(gòu)造C++---對象的構(gòu)造
輸出結(jié)果如圖所示,發(fā)現(xiàn)intialize位置改變了之后,初始化也出現(xiàn)了問題
存在的問題
1.intialize只是一個(gè)普通函數(shù),必須顯示調(diào)用
2.如果為調(diào)用intialize函數(shù),運(yùn)行結(jié)果是不確定的
解決方法
C++中可以定義與類名相同的特殊成員函數(shù)--這種特殊的成員函數(shù)叫做構(gòu)造函數(shù)
1.構(gòu)造函數(shù)沒有任何返回類型的聲明
2.構(gòu)造函數(shù)在對象定義時(shí)自動(dòng)被調(diào)用

示例

#include 

using namespace std;

class Test
{
    private:
        int i;
        int j;
    public:
        int getI()
        {
            return i;
        }
        int getJ()
        {
            return j;
        }
        Test()
        {
            printf("Test() Begin\n");

            i = 1;
            j = 2;

            printf("Test() End\n");
        }
};

Test gt;

int main()
{

    cout<<"gt.getI()="<getI()="<getI()<getJ()="<getJ()<

運(yùn)行結(jié)果
C++---對象的構(gòu)造
小結(jié)
1.每個(gè)對象在使用之前都應(yīng)該初始化
2.類的構(gòu)造函數(shù)用于對象的初始化
3.構(gòu)造函數(shù)與類同名并且沒有返回值
4.構(gòu)造函數(shù)在對象定義時(shí)自動(dòng)被調(diào)用

二.對象的構(gòu)造(中)

帶有參數(shù)的構(gòu)造函數(shù)
1.構(gòu)造函數(shù)可以根據(jù)需要定義參數(shù)
2.一個(gè)類中可以存在多個(gè)重載的構(gòu)造函數(shù)
3.構(gòu)造函數(shù)的重載遵循C++重載的規(guī)則
對象定義和對象聲明不同
1.對象定義--申請對象的空間并調(diào)用構(gòu)造函數(shù)
2.對象聲明--告訴編譯器存在這樣一個(gè)對象
示例

#include 
using namespace std;

class Test
{
public:
    Test() 
    { 
        cout<<"Test()"<
小結(jié)
1.構(gòu)造函數(shù)可以根據(jù)需要定義參數(shù)
2.構(gòu)造函數(shù)之間可以存在重載關(guān)系
3.構(gòu)造函數(shù)遵循C++中重載函數(shù)的規(guī)則
4.對象定義時(shí)會(huì)觸發(fā)構(gòu)造函數(shù)的調(diào)用
5.在一些情況下可以手動(dòng)調(diào)用構(gòu)造函數(shù)

三.特殊的構(gòu)造函數(shù)

1.無參構(gòu)造函數(shù)--沒有參數(shù)的構(gòu)造函數(shù),當(dāng)類中沒有定義構(gòu)造函數(shù)時(shí),編譯器默認(rèn)提供一個(gè)無參構(gòu)造函數(shù),并且其函數(shù)體為空
2.拷貝構(gòu)造函數(shù)--參數(shù)為const class_name&的構(gòu)造函數(shù),當(dāng)類中沒有定義拷貝構(gòu)造函數(shù)時(shí),編譯器默認(rèn)提供一個(gè)拷貝構(gòu)造函數(shù),簡單的進(jìn)行成員變量的值的復(fù)制

拷貝構(gòu)造函數(shù)的意義
1.兼容C語言的初始化方式
2.初始化行為能夠符合預(yù)期的邏輯
3.淺拷貝--拷貝后的物理狀態(tài)相同
4.深拷貝--拷貝后的邏輯狀態(tài)相同
小結(jié)
1.C++編譯器會(huì)默認(rèn)提供構(gòu)造函數(shù)
2.無參構(gòu)造函數(shù)用于定義對象的默認(rèn)初始狀態(tài)‘
3.拷貝構(gòu)造函數(shù)在創(chuàng)建對象時(shí)拷貝對象的狀態(tài)
4.對象的拷貝由淺拷貝和深拷貝兩種方式


當(dāng)前文章:C++---對象的構(gòu)造
網(wǎng)站鏈接:http://weahome.cn/article/joodjs.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部