1. 程式人生 > >C++中class類 的 建構函式、解構函式

C++中class類 的 建構函式、解構函式

說明

  • demo.cpp:main.cpp所在之處
  • Line.h:線段類的.h檔案
  • Line.cpp:線段類的.cpp檔案
  • Coordinate.h:座標類的.h檔案
  • Coordinate.cpp:座標類的.cpp檔案

之後的筆記都是這個模式,就不再贅述。在demo.cpp中有程式碼說明的註釋。

1. demo.cpp:
-----------------------------------
#include <iostream>
#include <stdlib.h>
#include "Line.h"
using namespace std;

/******************************/
/* 建構函式和解構函式 熟悉class類建立和銷燬的過程,明白其原理 */ /******************************/ int main(void) { Line *p = new Line(1,2,3,4); p->info(); delete p; p = NULL; system("pause"); return 0; }
2. Coordinate.h:
-----------------------------------
class Coordinate{
public:
    Coordinate
(int x, int y); ~Coordinate(); void setX(int x); int getX() const; //在Line中定義的const Coordinate m_coorA; void setY(int y); int getY() const; private: int m_iX; int m_iY; };
3. Coordinate.cpp:
-----------------------------------
#include <iostream>
#include "Coordinate.h"
using namespace std; Coordinate::Coordinate(int x, int y) { m_iX = x; m_iY = y; cout<<"Coordinate() "<<m_iX<<","<<m_iY<<endl; } Coordinate::~Coordinate() { cout<<"~Coordinate() "<<m_iX<<","<<m_iY<<endl; } void Coordinate::setX(int x) { m_iX = x; } int Coordinate::getX() const { return m_iX; } void Coordinate::setY(int y) { m_iY = y; } int Coordinate::getY() const { return m_iY; }
4. Line.h:
-----------------------------------
#include "Coordinate.h"
class Line{
public:
    Line(int x1, int y1, int x2, int y2);
    ~Line();
    void setA(int x, int y);
    void setB(int x, int y);
    void info();
public:
    const Coordinate m_coorA; //常物件 資料成員
    Coordinate m_coorB; // 普通物件 資料成員
};
5. Line.cpp:
-----------------------------------
#include "Line.h"
#include <iostream>


using namespace std;

Line::Line(int x1, int y1, int x2, int y2):m_coorA(x1,y1),m_coorB(x2,y2)
{
    cout<<"Line()"<<endl;
}
Line::~Line()
{
    cout<<"~Line()"<<endl;
}
void Line::setA(int x, int y)
{
    //m_coorA.setX(x);
    //m_coorA.setY(y);
}
void Line::setB(int x, int y)
{
    //m_coorB.setX(x);
    //m_coorB.setY(y);
}
void Line::info()
{
    cout<<"("<<m_coorA.getX() <<","<<m_coorA.getY()<<")"<<endl;
    cout<<"("<<m_coorB.getX() <<","<<m_coorB.getY()<<")"<<endl;
}

F5後:
這裡寫圖片描述