程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++對象指針數組與堆中對象數組

C++對象指針數組與堆中對象數組

編輯:關於C++
#include <IOSTREAM>
using namespace std;
/*堆中對象數組、對象指針數組*/
class stu
{
public:
	void set(int x){i = x + 6;}
	int get(){return i*i;};
private:
	int i;
};
void main()
{
	const int n = 1000;
	stu * p = new stu[n];//在堆中定義了一個對象數組,並將其首地址傳送給對象指針p.
	int i;
	stu * p0 = p;
	for (i=0; i<n; i++)
	{
		p->set(i);
		cout<<"p["<<i<<"]:"<<p->get()<<endl;
		p++;
	}
	delete [] p0;//刪除堆中對象數組;(注:此處p0不可換為p,因為p的值在for循環中已被改變,不再是數組的首地址了。)
	
	const int m = 1000;
	stu * p1[m]; //p1成了指針數組的數組名,是個指針常量
	for (i=0; i<m; i++)
	{
		p1[i] = new stu;//數組p1中,每個元素都是個對象指針,故可以直接被new stu賦值。
//		p1 = p1+i;//錯誤,p1是個數組名,是個指針常量
		p1[i]->set(i+1);
		cout<<"p1["<<i<<"]:"<<p1[i]->get()<<endl;
		delete p1[i];
	}

}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved