溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++第一章定義構造函數

發(fā)布時間:2020-07-06 11:13:06 來源:網絡 閱讀:679 作者:杜甲同學 欄目:移動開發(fā)

//C++程序結構

//main.cpp   包含主函數的程序文件

//.h文件用戶自定義的各種類的頭文件,建議一個.h文件中只說明一種類。

//.cpp       用戶自定義各種類的實現(xiàn)文件。

//構造函數是一種能夠自定初始化對象的特殊成員函數。

//構造函數是和類同名的成員函數



   接下來,我們定義一個Clock類

Clock.h:

#include <iostream>
class Clock {
                                                                                                                                                                                                                                                                                                                                                               
public:
                                                                                                                                                                                                                                                                                                                                                               
private:
    int m_Second;
    int m_Minute;
    int m_Hour;
                                                                                                                                                                                                                                                                                                                                                               
public:
    //Clock();就是構造函數
    Clock();
                                                                                                                                                                                                                                                                                                                                                             
    void PrintTimes();
                                                                                                                                                                                                                                                                                                                                                               
};
#endif /* defined(__C1__Clock__) */

Clock.cpp:


#include "Clock.h"
using namespace std;
Clock::Clock()
{
    std::cout<<"調用了構造函數"<<endl;
    m_Hour = 0;
    m_Minute = 0;
    m_Second = 0;
}
void Clock::PrintTimes()
{
    std::cout<<m_Hour<<":"<<m_Minute<<":"<<m_Second<<endl;
}

接下來是main函數:


int main(int argc, const char * argv[])
{
    //當程序執(zhí)行到下一行語句時,程序為對象clockVar分配內存控件,然后調用不帶參數的構造函數來初始化對象的成員變量,
    Clock clockVar;
    //最后程序調用成員函數PrintTimes
    clockVar.PrintTimes();
                                                                                                                                                                                                                                                                                                                     
    return 0;
}

代碼例子: "構造函數和析構函數.zip"  http://vdisk.weibo.com/s/G9afa


這樣,我們就對構造函數有了一個初步的認識。接下來我們繼續(xù)學習構造函數和運算符new

我們繼續(xù)使用之前的例子。main函數如下

int main(int argc, const char * argv[])
{
    //當使用new創(chuàng)建一個動態(tài)對象時,new首先分配足以保存Clock類的一個對象所需的內存空間,然后自動調用構造函數來進行初始化這塊內存,最后返回這個對象的地址。
    cout<<"In main()"<<endl;
    Clock* pObj = new Clock();
    cout<<"Object array"<<endl;
    Clock* pArray = new Clock[5];
    //當使用new創(chuàng)建一個對象或數組時,在使用完后需要用delete進行空間的釋放。
    delete pObj;
    //delete [] 用來釋放創(chuàng)建的數組對象
    delete [] pArray;
    return 0;
}

代碼下載地址: http://vdisk.weibo.com/s/G9jqI



接下來,我們繼續(xù)學習帶參數的構造函數

Clock.h文件內容如下:

#include <iostream>
class Clock {
                                                                                                                                                                        
public:
                                                                                                                                                                        
private:
    int m_Second;
    int m_Minute;
    int m_Hour;
                                                                                                                                                                        
public:
   //帶參數的構造函數  下面的參數可以省略,也可以前后不一致,仔細對比一下就可以發(fā)現(xiàn)。
    Clock(int =0,int = 0,int b=0);
                                                                                                                                                                        
                                                                                                                                                                        
};
#endif /* defined(__C1__Clock__) */


Clock.cpp如下:

using namespace std;
Clock::Clock(int _iSecond,int _iMinute,int _iHour)
{
    cout<<"初始化"<<_iHour<<":"<<_iMinute<<":"<<_iSecond<<endl;
    m_Second = _iSecond;
    m_Minute = _iMinute;
    m_Hour = _iHour;
}


main函數如下:

cout<<"開始"<<endl;
   Clock clockA;
   Clock clockB(10,20,21);


代碼下載地址:  http://vdisk.weibo.com/s/GaSKY


我們繼續(xù)學習重載構造函數:

Clock.h文件如下:

#include <iostream>
class Clock {
private:
int m_Second;
int m_Minute;
int m_Hour;
public:
//Clock();就是構造函數
    Clock();
//函數重載就是方法名相同但參數不同,因此就是不同的方法。之間沒有其他的關系除了名字相同以外
    Clock(int,int,int);
};
#endif /* defined(__C1__Clock__) */


Clock.cpp文件如下:

Clock::Clock()
{
    std::cout<<"初始化:調用了不帶參數的構造函數  "<<endl;
    m_Hour = 0;
    m_Minute = 0;
    m_Second = 0;
}
Clock::Clock(int _iSecond,int _iMinute,int _iHour)
{
    cout<<"初始化:調用了帶參數的構造函數"<<_iHour<<":"<<_iMinute<<":"<<_iSecond<<endl;
    m_Second = _iSecond;
    m_Minute = _iMinute;
    m_Hour = _iHour;
}


main函數如下:

Clock clockA;
  Clock clockB(12,23,43);


代碼下載地址:http://pan.baidu.com/share/link?shareid=2813300908&uk=3189484501


我們來學習析構函數:

//析構函數的作用:用于在對象注銷時執(zhí)行一些清理工作。

//注意:調用析構函數的順序,是和構造函數的順序相反的,即先建立的對象最后被析構。


Clock.h文件如下:


#include <iostream>
class Clock {
                                                                                         
private:
    int m_Second;
    int m_Minute;
    int m_Hour;
                                                                                         
public:
    //Clock();就是構造函數
    Clock();
    //~Clock();就是析構函數
    ~Clock();
                                                                                         
    //函數重載就是方法名相同但參數不同,因此就是不同的方法。之間沒有其他的關系除了名字相同以外
    Clock(int,int,int);
                                                                                       
                                                                                         
};
#endif /* defined(__C1__Clock__) */

Clock.cpp文件如下:

#include "Clock.h"
using namespace std;
Clock::Clock()
{
    std::cout<<"初始化:調用了不帶參數的構造函數  "<<endl;
    m_Hour = 0;
    m_Minute = 0;
    m_Second = 0;
}
Clock::~Clock()
{
    cout<<"析構函數:"<<m_Hour<<":"<<m_Minute<<":"<<m_Second<<endl;
}
Clock::Clock(int _iSecond,int _iMinute,int _iHour)
{
    cout<<"初始化:調用了帶參數的構造函數"<<_iHour<<":"<<_iMinute<<":"<<_iSecond<<endl;
    m_Second = _iSecond;
    m_Minute = _iMinute;
    m_Hour = _iHour;
}

main函數:

//析構函數的作用:用于在對象注銷時執(zhí)行一些清理工作。
//注意:調用析構函數的順序,是和構造函數的順序相反的,即先建立的對象最后被析構。
int main(int argc, const char * argv[])
{
    Clock clockA;
    Clock clockB(12,23,43);
    return 0;
}

//Clock clockA; 這種初始化的方式就是直接聲明一個Clock類的對象。它會自動調用析構方法。



代碼下載地址: http://pan.baidu.com/share/link?shareid=2927544745&uk=3189484501




接下來們學習 析構函數和delete

Clock.h

#include <iostream>
class Clock {
                                      
private:
    int m_Second;
    int m_Minute;
    int m_Hour;
                                      
public:
    //Clock();就是構造函數
    Clock();
    ~Clock();
                                      
                                      
    //函數重載就是方法名相同但參數不同,因此就是不同的方法。之間沒有其他的關系除了名字相同以外
    Clock(int,int,int);
                                    
                                      
};

Clock.cpp

#include "Clock.h"
using namespace std;
Clock::Clock()
{
    std::cout<<"初始化:調用了不帶參數的構造函數  "<<endl;
    m_Hour = 0;
    m_Minute = 0;
    m_Second = 0;
}
Clock::~Clock()
{
     cout<<"析構函數:"<<m_Hour<<":"<<m_Minute<<":"<<m_Second<<endl;
}
Clock::Clock(int _iSecond,int _iMinute,int _iHour)
{
    cout<<"初始化:調用了帶參數的構造函數"<<_iHour<<":"<<_iMinute<<":"<<_iSecond<<endl;
    m_Second = _iSecond;
    m_Minute = _iMinute;
    m_Hour = _iHour;
}

main函數

int main(int argc, const char * argv[])
{
    //指針需要手動調用delete方法,才能將內存釋放。
    Clock* clockA = new Clock(10,4,12);
    Clock* clockB = new Clock[4];
    Clock tempA;
    //指針相對于類型對象的優(yōu)勢,在于占用內存的空間上。
    cout<<"指針占用的內存空間"<<sizeof(clockA)<<endl;
    cout<<"類型對象占用的內存空間"<<sizeof(tempA)<<endl;
                            
    delete clockA;
    delete [] clockB;
    return 0;
}

代碼下載地址:http://pan.baidu.com/share/link?shareid=752461709&uk=3189484501


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI