4

最も基本的なレベルで、次のようなオブジェクトがあります。

#include <X11/Xlib.h>

class x_link {
    public:
        x_link()
        {
            display_ = XOpenDisplay(NULL);
        }

        ~x_link()
        {
            XCloseDisplay(display_);
        }

        Display* display_ptr() const
        {
            return display_;
        }

    private:
        Display* display_;
};

このような場合、 「const」はどのようx_link::display_ptr()にすべきか疑問に思っていました。

この古い質問、論理状態に影響するがビット単位の状態に影響しない場合、メンバー関数は「const」にする必要がありますか? 、私のメソッドは(それ自体)オブジェクトの論理状態またはビットごとの状態に影響を与えないため、const進むべき道であるという印象を与えます。

しかし同時に、 を提供すると、Display*ユーザーは (たとえば、XCloseDisplay()自分自身を呼び出すことによって) オブジェクトを壊すことができます。

何かご意見は?

4

1 に答える 1

1

このクラスは、主にCインターフェイスをラップすることを目的とした単純なラッパークラスのように見えます。その場合は、constを使用してプログラムを複雑にしないことをお勧めします。

オブジェクトまたは関数が読み取り専用である明確なケースのために、constの使用を予約します。

Constは、プログラマーをだましてプログラムを不必要に複雑にする多くのC++機能の1つです。

于 2012-07-04T23:03:49.413 に答える