ゆとりーなの日記

日記的な事を書いて行くと思はれる

ローカル変数を宗教的な理由でconstにすると変数の数が増える

宗教的な理由でローカル変数をconstにすると、変数を書き換えての使い回しが出来なくなるので変数の数が多くなることに気付きました。精製コストの多い変数に関してはどうしたものかと思う次第です。

#include <memory>

class Hoge {
public:
    explicit Hoge(int i);
};


int main() {
    // 宗教的な理由でconstにすると二つの変数が必要
    const std::unique_ptr<Hoge> kHoge(new Hoge(1));
    const std::unique_ptr<Hoge> kHoge2(new Hoge(2));
    // 思想を捨ててconstにしないと一つの変数で済む
    std::unique_ptr<Hoge> hoge(new Hoge(1));
    hoge.reset(new Hoge(2));
}

後者の方が多分効率は良いです。ここでconstを付ける意義について考えると、宗教的な理由の他にはconstを付けることで書き換え不可になることでバグの混入を防げ、バグ出しの時に調査を後回しに出来ることがあるということが挙げられます。ただ、正直これは参照渡しの時につけるconstに言えることで、ローカル変数にconstを付ける意義はぶっちゃけどうなの?という疑問が上がります。正直意味ないでしょという人もいるみたいですし。
でも私は信仰心が高いので、ローカル変数にもちゃんとconstを付けます。以上。