- 「////////」となっている部分のコードの意味を知りたいです。
- [自分自身だったら...]の場合はどのような場合か知りたりです。
- この処理内容はどの場合に実行されるのか検証しましたがprintfで出力されないのでそのあたりを教えていただきたいです。
#ifndef ___IntArray
#define ___IntArray
#include <iostream>
using namespace std;
class IntArray {
private:
int nelem;
int *vec;
public:
IntArray() {};
explicit IntArray(int size) :nelem(size)
{
vec = new int[nelem];
};
int size()const {
return nelem;
}
int& operator[](int i) {
return vec[ i ];
}
~IntArray() {
delete[] vec;
}
/*コピーコンストラクタ*/
IntArray(const IntArray& x)
{
if (&x == this) // もし自分自身だったら...
{
cout << "同じ";
////////////
nelem = 0;
vec = NULL;
/////////////
}
else {
nelem = x.nelem;
vec = new int[nelem];
int i = 0;
for (i = 0; i < nelem; i++) {
vec[i] = x.vec[i];
}
}
}
IntArray& operator = (const IntArray& x) {
if (&x != this)
{
if (nelem != x.nelem)
{
delete[] vec;
nelem = x.nelem;
vec = new int[nelem];
}
int i = 0;
for (i = 0; i < nelem; i++) {
vec[i] = x.vec[i];
}
}
else { cout << "else"; }
return *this;
}
};
#endif;