対象書籍
C++言語のカラクリ
■第1刷
誤: ……C言語のソースコードに変換するインタープリタを……
正: ……C言語のソースコードに解釈/実行するインタープリタを……
誤: Global::Global(int n) * n_(n) {
正: Global::Global(int n) : n_(n) {
誤: return (int )0 ;
正: この1行は不要。削除
誤:
……(((((struct Base *)_au0__Xthis__ctor_Derived ))))) ) ), ((struct Base *)_au0__Xthis__ctor_Derived ))) , ((_au0__Xthis__ctor_Derived ))) ) ) ;
正:
……(((((struct Base *)_au0__Xthis__ctor_Derived ))))) ) ), (_au0__Xthis__ctor_Derived -> _Base__vptr = Derived__vtbl)) , ((_au0__Xthis__ctor_Derived ))) ) ) ;
誤: entern “C” print(int,int);
正: entern “C” void print(int,int);
誤: Motherクラスのなかのメンバiを呼び出そうとすると、……
正: Motherクラスのなかのメンバを参照しようとすると、……
誤: ……どちらからキャストするのは判断できませんし……
正: ……どちらからキャストするのかは判断できませんし……
誤: 正しくコンパイルできるList4-8のコードから……
正: List4-8にあるd*へのキャスト (d*)ap を dynamic_cast<d*>(ap) に差し替えた正しくコンパイルできるコードから
誤: class a { public: virtual ~a() {} };
正: class a {};
誤: ところがJavaやC#ではすべてのオブジェクトはObjectから導出されるので、ダイヤモンド継承にならざるをえません。
正: ところがJavaやC#ではすべてのオブジェクトはObjectから導出されるので、多重継承を実現しようとすればダイヤモンド継承にならざるをえません。
誤: Stack::Stack() : capacity_(n), size_(0) {
正: Stack::Stack(int n) : capacity_(n), size_(0) {
誤: Stack(int) stk;
正: Stack(int) stk(10);
誤: for ( int i = 0; i < 5; ++i ) { stk.push(i); }
正: for ( int i = 0; i < 10; ++i ) { stk.push(i); }
誤: ……用意してくれているvector.hのなかに……
正: ……用意してくれているgeneric.hのなかに……
誤: ……スタックに5回pushしています。
正: ……スタックに10回pushしています。
誤: for ( int i = 0; i < 5; ++i ) { stk.push(i); }
正: for ( int i = 0; i < 10; ++i ) { stk.push(i); }
誤: for ( int i = 0; i < 5; ++i ) { stk.push(i); }
正: for ( int i = 0; i < 10; ++i ) { stk.push(i); }
誤: ……宣言文にexternと書けば……
正: ……宣言文にexportと書けば……
誤: ……付けるexternはサポートしなくても……
正: ……付けるexportはサポートしなくても……
誤: 「実際にexternを使って……
正: 「実際にexportを使って……
誤: 「externはサポートしなくていいや」……
正: 「exportはサポートしなくていいや」……
誤: ……なぜ言語の使用のレベルダウンまで……
正: ……なぜ言語の仕様のレベルダウンまで……