64,281
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
class A
{
public:
A(int a,int b):i(a),j(b){}
void print()
{
cout<<i<<" "<<j<<endl;
}
private:
int i;
int j;
};
有这样一个类,如何用new运算符在堆区开辟一个对象数组的空间呢,
class A
{
public:
A(int a,int b):i(a),j(b){}
void print()
{
_tprintf_s(_T("[%d %d]"), i,j);
}
void Set(int a,int b){i=a; j=b;}
private:
int i;
int j;
};
int _tmain(int argc, _TCHAR* argv[])
{
A *pAx=(A *)new BYTE[sizeof(A)*100];
pAx->print();
pAx[5].Set(33,55);
pAx[5].print();
delete [](BYTE*)pAx;
return 0;
}
class A
{
public:
A(int a,int b):i(a),j(b){}
void print()
{
_tprintf_s(_T("[%d %d]"), i,j);
}
void Set(int a,int b){i=a; j=b;}
private:
int i;
int j;
};
A *pAx=(A *)new BYTE[sizeof(A)*100];
pAx->print();//没初始化,输出乱数字,但执行是正常的
pAx[5].Set(33,55);//执行正常
pAx[5].print();//这个执行与效果一切正常...
delete [](BYTE*)pAx;
A* pA = (A*)malloc(sizeof(A) * COUNT);
for(int i = 0; i < COUNT; ++i)
{
new (&pA[i]) A(10, 20);
}
A *pArr = new A[NUM];