ページ 11

constの使い方

Posted: 2014年7月27日(日) 13:14
by こんぺいとう
初めましてtakashiと申します。
Effective C++の第一章を読みましたが、理解に不安があるので質問します。

だいいには、constやinlineの使い方が書かれていました。

そこで、例えば簡単なアクセサメソッドの場合は、下記のような書き方で良いのでしょうか。

[user.hpp]

コード:

class User {
public:
    // アクセサをヘッダファイル内に書くのでinlineは不要
    // メンバ変数を変更しないので、constメンバ関数にする
    int getId() const { return id; }

    // 引数は関数内で変更されないのでconst
    // 引数がローカル変数としてコピーされないよう、&で参照する
    void setId(const int& id) { this->id = id; }

    // 戻り値を定数として取得するため頭にconst
    // メンバ変数を変更しないので、関数名の後にconst
    const int getFunctionId const() { return function_id; }
private:
    int id;
    static const int function_id;
}
ところで別件ですが、最近はcppファイルを使わずに、アクセサ以外の普通の関数も
hppファイルにガリガリ書くのが流行っていると聞いたことがあるのですが、本当なのでしょうか。

Re: constの使い方

Posted: 2014年7月27日(日) 13:18
by こんぺいとう
すみません、誤字がありました。
だいいには、constやinlineの使い方が書かれていました。
→ 第一章には、constやinlineの使い方が書かれていました。

Re: constの使い方

Posted: 2014年7月27日(日) 14:50
by softya(ソフト屋)
このコードはコンパイル確認済みでしょうか? VS2012でもコンパイルできないです。
文法的な質問ですので、コンパイル確認されていることは大前提だと思いますが。

> hppファイルにガリガリ書くのが流行っていると聞いたことがあるのですが、本当なのでしょうか。
私は知りません、時々流行りますが。
hppはcppと区別しづらいので私は使いません。

Re: constの使い方

Posted: 2014年7月27日(日) 14:56
by みけCAT
takashi さんが書きました: ところで別件ですが、最近はcppファイルを使わずに、アクセサ以外の普通の関数も
hppファイルにガリガリ書くのが流行っていると聞いたことがあるのですが、本当なのでしょうか。
hppかhか、流行っているかは別として、
テンプレート関数はヘッダに書かないと(別のソースファイルに書くのでは)使えないらしいですね。

Re: constの使い方

Posted: 2014年7月27日(日) 19:11
by へにっくす
・constを関数名の後につけるのは間違い。
・classの宣言の後に;がないね。

以下が参考になりますかね。
const修飾子について
21項 使えるときは、必ず const を使おう - C++ビギナーに捧ぐ EffectiveC++入門

hppは私も使いませんね。
テンプレートでよく使用されるようですが、私は使わないので。