上圖:表示一條線的類需要兩個點的物件;
實際上線段的例項化應該有引數:
(y)//可以用初始化列表也可以不用;
coordiante::
~coordiante()
void coordiante::
setx
(int _x)
int coordiante::
getx()
void coordiante::
sety
(int _y)
int coordiante::
gety()
line.h
#include
"coordinate.h"
class
line
;
line.cpp
#include
"line.h"
#include
using
namespace std;
line::
line
(int x1,
int y1,
int x2,
int y2)
:m_coora
(x1,y1)
,m_coorb
(x2,y2)
//因為coora、coorb兩個物件比line先例項化,如果在line的建構函式裡初始化coora和coorb就會來不及,只能用初始化列表,在line的建構函式執行之前就先把初始值傳給coora和coorb;
line::
~line()
void line::
seta
(int x,
int y)
void line::
setb
(int x,
int y)
void line::
printinfo()
demo.cpp
#include
#include
//#include "coordinate.h"//如果加了會出錯:「class」型別重定義,只加line.h就行了(line.h已經引用了coordinate.h)
#include
"line.h"
using
namespace std;
intmain
(void
)
執行結果:
coordiante()
1,2coordiante()
3,4line()
(1,2
)(3,
4)~line()
~coordiante()
3,4~
coordiante()
1,2請按任意鍵繼續.
..
補充:如果物件a中有物件成員b,物件b沒有預設建構函式,那麼物件a必須在初始化列表中初始化物件b。
定義具有2個物件的coordinate陣列,遍歷物件陣列,列印物件資訊;
#include
using
namespace std;
class
coordinate
// 列印座標的函式
void
printinfo()
public
:int m_ix;
int m_iy;};
intmain
(void
)return0;
}
執行結果:
(1,
2)(3,4)
C 物件成員
物件成員 乙個物件中包含其他物件 如 class line 當例項化這樣乙個物件時,會先例項化m coora,再例項化m coorb,最後例項化line 物件消亡時,會先銷毀line,再m coorb,最後m coora 如果座標類有乙個預設建構函式,那麼在例項化線段物件的時候,不使用初始化列表。如...
c 之物件成員
class line 線段類物件呼叫了下面的點類的物件來構成他 coordinate coordinate int x,int y void line setb int x,int y void line printinfo cout p printinfo delete p p null retu...
c 類成員物件
成員物件 當乙個類的成員是另乙個類的物件時,這個物件就叫成員物件。1 出現成員物件時,如果成員物件的建構函式是有參建構函式,則該類的初始化列表需要對成員物件進行初始化。class member class test 2 乙個有成員物件的類例項化時要先呼叫成員物件的建構函式,然後再呼叫該類的建構函式,...