次の場合、メモリリークは発生しますか? はいの場合、どうすれば問題を解決できますか? Base
クラス (つまり)でポインタを使用Structure* var
し、デストラクタで削除する必要がありますか?
ケース 2 がメモリ リークを引き起こさない場合、どうなりStructure(0,0)
ますか? それは即座に作成され、破壊されますか、それとも何か他のことが起こりますか?
ケース 1 :
struct Structure
{
int a;
int b;
Structure() { a=1; b=2; }
Structure(int num1, int num2) : a(num1), b(num2){}
};
class Base
{
private:
Structure var;
public:
Base(Structure structure)
{
var = structure;
}
};
class Derived : public Base
{
public:
Derived(bool boolean) : Base(boolean ? *(new Structure(0,0)) : *(new Structure(10,10))){}
};
int main()
{
Derived derived(true);
}
ケース 2 :
struct Structure
{
int a;
int b;
Structure() { a=1; b=2; }
Structure(int num1, int num2) : a(num1), b(num2){}
};
class Base
{
private:
Structure var;
public:
Base(Structure structure)
{
var = structure;
}
};
class Derived : public Base
{
public:
Derived(bool boolean) : Base(boolean ? Structure(0,0) : Structure(10,10)){}
};
int main()
{
Derived derived(true);
}