C++勉強中(4)

連休明けました。後輩に借りた独習C++で勉強継続中

6章 演算子オーバーロード

6.3 例1のプログラムが冗長

わざわざコンストラクタをオーバーロードして、未定義の場合0を入力するように作ってあるのに、
オブジェクトを宣言するときに初期値に0を入力してある。しかもこれはここではどうでも良いのでプログラムが冗長

class coord {
        int x, y;       // 座標値
public:
        coord() { x=0; y=0; }
        coord(int i, int j) { x=i; y=j; }
        (略)
};

↑に対して↓のo4は初期値設定する必要ない。

int main()
{
        coord o1(10, 10), o2(5, 3), o3(10, 10), o4(0, 0);
        (略)
}
戻り値に*thisを使うのなら、thisを省略するのを止めればいいのに。

x,yと省略せずにthis->x,this->yと書くほうが分かりやすい(と僕は思う)

5章 関数オーバーロード

5.1 例4のプログラムが不適切

class myclassでsetxを定義してるのに利用してない。

 void setx(int n) { x = n; }

main()内で、オブジェクトを代入して設定している所があるが、多分ここで使いたかったに違いない

for(i=1; i<10; i++) p[i] = ob;

ここは以下のようにすれば無理矢理使うこともできるが、定義の行が無駄なだけですね。

for(i=1; i<10; i++) p[i].setx(ob.getx());
5.2 例1のプログラムが不適切

コピー前後の内容表示をさせるコード↓でなんで表示順を変えてるのか意味不明。

for(i=9; i>=0; i--) cout << num.get(i);
for(i=1; i<10; i++) cout << x.get(i);

あと、新しいアドレスが確保されていることを確認するためにはそれぞれのメモリアドレス(&num、&x)を表示すべき。

5.2 例2のプログラムが不適切

コピーコンストラクタを定義してるだけでつかってないじゃん!アホか