私はそれを短く明確に保ちます-動的に割り当てられたメモリを練習するために、動的に割り当てられた配列にパラメータ(中心と半径の長さのXとY)を格納する円を作成することにしました。配列は動的に割り当てられるため、リークを止めるにはコンストラクターを実装する必要があります。また、他のいくつかのバグを回避するために、コピー コンストラクターを実装し、代入演算子をオーバーロードする必要があることも意味します。(ほとんど同じコードで)デストラクタをかなりうまく実装したと思います。ただし、コピー コンストラクターについては少し助けが必要です。
#include <iostream>
using namespace std;
class Circle
{
private:
int* data;
public:
Circle(){
cout <<"I am the default constructor" << endl;
data = NULL;
}
Circle(int* p){
cout <<"I am the set up constructor" << endl;
data = p;
}
~Circle(){
cout <<"I am the destructor" << endl;
delete data;
}
Circle& operator=(const Circle& tt1){
cout << "Overloaded assignment operator reporting in!" << endl;
if(this != &tt1){
//free old data
delete this->data;
data = new int(3);
*data = *(tt1.get_data());
*(arr+1) = *(tt1->get_data()+1);
*(arr+2) = *(tt1->get_data()+2);
return *this;
}
}
Circle(const Circle& tt1){
cout << "I am the copy constructor!" << endl;
if(this != &tt1){
//free old data
delete this->data;
data = new int(3);
*data = *(tt1.get_data());
*(arr+1) = *(tt1->get_data()+1);
*(arr+2) = *(tt1->get_data()+2);
return *this;
}
}
};
int main(){
//is this object constructed well?
int arr [] = { 16, 2, 7};
Circle a(arr);
return 0;
}