Effective C++を読み始めたので、ちょこちょこメモを書いていきたいと思います。メモの取り方としては、下の流れで書いていこうと思います。
1)読みながら気になったキーワードを書く
2)キーワードを補足しながら、文章を足していく。
2)コードをGitHubにあげる。https://github.com/brookvalewalk
最初から完璧なものを書こうとすると、なかなか投稿できないし継続できないと思いますので。Qtも習得中なので、コードはQtCreatorでプロジェクトを作成して、GitHubにもソースを上げたいと思います。では、第1回目スタート〜。
0.イントロダクション
用語法
宣言
コンパイラに対して、識別子何かの名前と型を知らせるものです。
main.cpp
QString sayHello(); // 関数の宣言
class MyWidget; // クラスの宣言
定義
宣言で省略した詳細をコンパイラに知らせるもの。
main.cpp
QString sayHello() {
return "Hello!";
}
// クラスの定義
class MyWidget
{
public:
MyWidget(QString word){
greatingWord = word;
}
~MyWidget();
private:
QString greatingWord;
};
初期化
- オブジェクトに最初に値を与えるプロセス。
- デフォルトコンストラクタ
引数を取らないコンストラクタ - explicitキーワード
暗黙の型変換を防止するのが目的。explicitなしで宣言すると意図しない型変換が行われるのでバグの要因になる。 - コピーコンストラクタ
オブジェクトを「同じ型の別のオブジェクト」で初期化するときに使われる。 - コピー代入演算子
オブジェクトを「同じ型の別のオブジェクト」を代入するときに使われる。
参考文献
- What is the difference between a definition and a declaration?
https://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration - 宣言と定義 (C++)
https://msdn.microsoft.com/ja-jp/library/0e5kx78b.aspx - C++宣言と定義の早見表
http://flat-leon.hatenablog.com/entry/cpp_decl_define_quick_ref
1項「C++を複数の言語の連合とみなそう」
- C++は、もともとCにいくつかのオブジェクト指向的特徴を付け加え、「クラス付きC」と呼ばれていたが、誕生以来、改良され続けきた。
- 今日では、C++は単一の言語ではなく、関連する下記4つの言語の連合として捉えるべき。
- C
- オブジェクト指向C++
- テンプレートC++
- STL
参考文献
- book-notes/effective-c++-3rd-edition.markdown
https://github.com/mgp/book-notes/blob/master/effective-c%2B%2B-3rd-edition.markdown