-1

const の使用例について読んだことがありますが、ほとんどの場合、const についてよく理解しているように感じます。ただし、これが頻繁に表示されない理由がわかりません。

void someFunction(const string& A) const

const メンバー関数に const パラメーターがある場所。何らかの理由で、例を調べて関数が const の場合、const は次のようにパラメーターから取り除かれているようです。

void someFunction(string& A) const

しかし、それは私がAを変更するのを止めているようには見えません.constメンバ関数にconstパラメータを持つのは悪い形と考えられていますか?

A が変更されない場合、パラメーターにも const を保持しない理由は何ですか?

編集:これは明確にしない私のせいですが、パラメーターの前に追加することと関数の後に追加することの違いを理解しました。私が見たコードの多くは、この 2 つを組み合わせたものではなく、その理由があるかどうかを理解しようとしていました。

4

2 に答える 2

2

const関数の on は、メンバー関数にのみ適用されます。クラスオブジェクトが変更されないことを示しています。参照によって渡された関数パラメーターを変更できないという意味ではありません。

パラメータを as 関数に渡すと、パラメータをconst &変更できなくなります。

class A
{
private:
    int data;
public:
    void func1(const std::string& s) const; // s cannot be modified, members of A cannot
    void func2(std::string& s) const; // s can be modified, members of A cannot

    void func3(const std::string& s); // s cannot be modified, members of A can be
    void func4(std::string& s); // s can be modified, as can members of A
};

というラベルが付いた機能constは変更できませんが、ラベルが付いていない限りdata、そのような制限はありません。sconst

于 2013-10-09T23:38:42.180 に答える