More Related Content
Similar to C++でぼくが忘れがちなこと
Similar to C++でぼくが忘れがちなこと (20)
C++でぼくが忘れがちなこと
- 3. C++ 、覚えてますか?
• …どんな言語でもそうだけど
o ある機能を覚えたきっかけが
職場の人のソース
学校の先輩のソース
Web に載っていたソース
そこに載っていたものをパターンとして覚えて
しまいがち。
だから、言語の機能で持っているものや、規格
で決まっていることも知らなかったり
# まぁ、 C++er …は規格書大好きだから別か
- 7. typedef と cv 修飾
• typedef や const の位置は任意
// 以下の宣言は全部同じ
typedef const unsigned int cuint;
const typedef unsigned int cuint;
int const typedef unsigned cuint;
- 8. virtual いらない。 override でいい
• 基底クラスで virtual 宣言されているメソッ
ドは派生クラスで virtual と書かなくても仮
想関数
struct Base { virtual void foo(); };
struct Derived {
void foo(); // 仮想関数
};
// 今時の C++er ならこう書いたほうがいい
struct Derived {
void foo() override; // 仮想関数
};
- 15. メンバ初期化での *this
• メンバ初期化の構文で *this を使える場合が
ある
struct outer {
unsigned int sz = sizeof(*this);
void f() {
int b[sizeof(*this)];
struct inner {
unsigned int sz = sizeof(*this); // OK
int c[sizeof(*this)]; // NG
} i;
}
};
- 16. スコープ
• こんなのが OK
typedef int T;
template<typename T = T, T init = T()> struct my_type {
T value = init;
my_type() = default;
my_type(const T& v) : value(v) {}
operator T() { return value; }
};
- 18. int main()
• C では return いるけど、 C++ ではいらない
よ
o C++ で return の省略は return 0; になる
• C++ では main の再帰やアドレス取得はダメ
o C ではいいらしい
- 22. typedef と構造体(クラス)
• C++ では同じスコープで別の typedef を作れ
ない
typedef struct name1 {} name1; // どちらも OK
struct name2{};
typedef int name2; // C だと OK