0
class Point {
public:
    Point(int x, int y) : { x = new int(x); y = new int(y) }
    ...
    ...
    Point& operator=(const Point& other) {
        if(this!=&other){
            delete x;
            delete y;
            x = new int(*other.x);
            y = new int(*other.y);
        }
        return *this;
    }
private:
    const int* x;
    const int* y;
}

このoperator=の実装は、このxとyがすでに初期化されている場合でも機能しますか?constポインターを削除すると、再割り当てできますか?

4

1 に答える 1

7

これはconstポインタではなく、へのポインタconstです。したがって、ポインタを変更することはできますが、ポインタが指すものを変更することはできません。

constポインタは

int* const x;

その場合、コードはコンパイルされません。

于 2013-02-07T09:15:48.370 に答える