const 厨

職場で、変に const された C++ のコードに出会した。

int parse_arg(const int argc, char** const argv)
{
    for (int i=1; i < argc; ++i) {
        // ...

別に const 付けなくても動くんだから間違いじゃないけど。
たぶん、やりたいことは、こうでしょ?

int parse_arg(int argc, const char* const * argv)
{
    for (--argc, ++argv; argc > 0; --argc, ++argv) {
        // ...
  • イディオムを使おう。
  • 本当に変更したくない物を const しよう。

でも逆に

int parse_arg(int& argc, char**& argv)

とかした方が、後々便利かも知れない。


そして職場には、こんなコードも存在する。

const char const * p = ...

やる気なくすわ。