- スレを勃てるまでもないC/C++の質問はここで 22
565 :デフォルトの名無しさん[sage]:2014/09/23(火) 15:53:24.78 ID:+21wRmlf - >>562
C++の言語仕様は、JavaやC#より膨大だよ。 後者は、言語仕様がすっきりしていたのが人気が出た理由の一つだから。
|
- スレを勃てるまでもないC/C++の質問はここで 22
566 :デフォルトの名無しさん[sage]:2014/09/23(火) 16:12:29.55 ID:+21wRmlf - >>560
C++の物量は JavaやC#の3倍くらい多いよ。
|
- スレを勃てるまでもないC/C++の質問はここで 22
567 :デフォルトの名無しさん[sage]:2014/09/23(火) 16:27:09.71 ID:+21wRmlf - 感覚としては、templateの複雑さ、xxxx_cast<yyy> の理解のしづらさ、
new(*p)CPerson() 的なコンストラクタ、new演算子の多重定義、 多重継承時の仮想基底クラス、右辺値参照、move、可変長引数の 仕様の複雑さ、#include <xxxx.h>から#include <xxxx> への変更、 static修飾の意味の不安定さ(translation localの意味とスタック変数でない、 という意味の二重性)、namespace, using, alias, typedef など似た物が 沢山あること、C/C++言語使用とは異質なものとしてプリプロセス処理があること などなどとても複雑で実際は、3倍では済まない。 C++11,14まで正確に理解するための学習時間は、Javaなどの20倍くらいは必要。 ただし、JavaはJavaでGenericsなどで仕様拡張が行われているのでこの倍数の 数値は変わりうる。
|
- スレを勃てるまでもないC/C++の質問はここで 22
568 :デフォルトの名無しさん[sage]:2014/09/23(火) 16:42:59.75 ID:+21wRmlf - C++には昔から正しく理解するのが難しい事柄として、コンストラクタと代入演算子の
違いが分かりにくいという問題がある。 CPerson person1 = CPerson(xxx); CPerson person2; CPerson person3(); ↑はどれもコンストラクタが呼び出され、代入演算子は一度も呼び出されない。 CPerson person4; person4 = CPerson(xxx); ↑見た目は似ているが、こちらはコンストラクタが呼び出された後、代入演算子が呼び出される。 また、引数なしのコンストラクタを「デフォルト・コンストラクタ」と呼ぶが、 それを自分で定義しない場合は、「デフォルト・デフォルト・コンストラクタ」が自動生成される。 こういった用語の理解が必要なのも、仕様の膨大さを感じさせる原因となっている。
|
- スレを勃てるまでもないC/C++の質問はここで 22
571 :デフォルトの名無しさん[sage]:2014/09/23(火) 17:45:27.22 ID:+21wRmlf - >>570
Googleで、言語を英語にして、「defaulted default constructor」で 検索してみるべし。
|