トップページ > プログラム > 2014年09月23日 > +21wRmlf

書き込み順位&時間帯一覧

7 位/203 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000001310000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレを勃てるまでもないC/C++の質問はここで 22

書き込みレス一覧

スレを勃てるまでもない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」で
検索してみるべし。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。