1. 程式人生 > >C++筆記(十五)——類 :物件陣列

C++筆記(十五)——類 :物件陣列

一、定義

        物件陣列是指每一個數組元素都是一個單獨的物件,即:若一個若干個物件,我們把這一系列的物件用一個數組來存放。

demo:物件陣列的使用

Object_Array.cpp

#ifndef __OBJECT_ARRAY_H__
#define __OBJECT_ARRAY_H__

class CData
{
private:
	int m_x;
public:
	CData();
	CData(int t); //建構函式
	CData(const CData &ob);//拷貝建構函式
	~CData(); //解構函式

	void setX(int t);
	int getX(void) const;
};

#endif

Object_Array.h

#include "Object_Array.h"
#include <iostream>

using namespace std;

CData::CData() //建構函式
{
	cout << "無參建構函式" << endl;
}

CData::CData(int t) //建構函式
{
	m_x = t;
	cout << "有參建構函式 X = " << m_x << endl;
}

CData::CData(const CData &ob)//拷貝建構函式
{
	m_x = ob.m_x;
	cout << "拷貝建構函式" << endl;
}

CData::~CData()
{
	cout << "解構函式" << endl;
}

void CData::setX(int t)
{
	m_x = t;
}

int CData::getX(void) const
{
	return m_x;
}

main.cpp

(1)例項化無引數組

#include "Object_Array.h"
#include <iostream>

using namespace std;

int main() //例項化無引數組
{
	{
		CData ob[4]; //例項化4個元素的物件陣列
	}
	
	getchar();
	return 0;
}

(2)例項化有引數組:這種初始化僅適使用於類中只有一個物件(陣列成員)

int main1() //這種初始化僅適使用於類中只有一個物件(陣列成員)
{
	{	
		CData ob[4] = { 1, 2, 3, 4 }; //例項化4個元素的物件陣列
		for (int i = 0; i < 4; ++i)
		{
			cout << "m_x = " << ob[i].getX() << endl;
		}
	}

	getchar();
	return 0;
}

(3)標準的初始化每個元素物件顯示的呼叫建構函式

int main() //標準的初始化:每個元素物件顯示的呼叫建構函式
{
	{
		CData ob[4] = { CData(5),CData(38),CData(20),CData(30) }; //例項化4個元素的物件陣列
		for (int i = 0; i < 4; ++i)
		{
			cout << "m_x = " << ob[i].getX() << endl;
		}
	}

	getchar();
	return 0;
}

注:

物件陣列由C++的系統預設建構函式建立

若類中含有建構函式,那麼定義物件陣列時,也可通過不帶引數的建構函式或帶有預設引數的建構函式給物件陣列元素賦值。