1. 「////////」となっている部分のコードの意味を知りたいです。
  2. [自分自身だったら...]の場合はどのような場合か知りたりです。
  3. この処理内容はどの場合に実行されるのか検証しましたが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;