C++相談室 part96at TECH
C++相談室 part96 - 暇つぶし2ch2:デフォルトの名無しさん
12/06/30 13:08:20.71
■基本■
[C++ FAQ]
 URLリンク(www.parashift.com)
 URLリンク(www.bohyoh.com) (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
 URLリンク(en.cppreference.com) (英語)
 URLリンク(ja.cppreference.com) (↑の日本語訳だけどまだ未完)
[Stroustrup]
 URLリンク(www2.research.att.com)
[C++ International Standard]
 URLリンク(www.iso.org)
[JTC1/SC22/WG21 - C++]
 URLリンク(www.open-std.org)
  ここから規格の最新ドラフトがダウンロードできる。
[JIS X3014]
 URLリンク(www.jisc.go.jp)
  ISO規格の日本語訳。JIS X3014:2003はISO/IEC 14882:2003 (E)に対応。

3:デフォルトの名無しさん
12/06/30 13:08:52.69
■Libraries■
[Boost]
 Boost URLリンク(www.boost.org)
 (日本語) URLリンク(www.kmonos.net)
 (日本語) URLリンク(shinh.skr.jp)
[標準ライブラリ]
 SGI-STL URLリンク(www.sgi.com)
 STLport URLリンク(stlport.sourceforge.net)
 GNU libstdc++ URLリンク(gcc.gnu.org)
 Apache C++ Standard Library (STDCXX) URLリンク(stdcxx.apache.org)
 STLFilt URLリンク(www.bdsoft.com)
 (日本語) URLリンク(episteme.wankuma.com) (※1999年発行注意)
[Loki]
 URLリンク(sourceforge.net)
 LokiPort-MSVC6sp5 URLリンク(fara.cs.uni-potsdam.de)

4:デフォルトの名無しさん
12/06/30 13:09:34.44
■Books■
amazon C,C++関連書籍
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp)

The C++ Programming Language
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
C++ Primer (3rd Edition)
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
The C++ Standard Library
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
Effective C++
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
More Effective C++
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
Exceptional C++
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
More Exceptional C++
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
Exceptional C++ Style
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)

5:デフォルトの名無しさん
12/06/30 13:10:09.27
■Books(Templateまわり)■
Effective STL
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
Modern C++ Design
 URLリンク(www.amazon.com)
 URLリンク(www.amazon.co.jp) (翻訳)
C++ Templates
 URLリンク(www.amazon.com)
C++ Template Metaprogramming
 URLリンク(www.amazon.com)

6:デフォルトの名無しさん
12/06/30 13:14:54.79
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル'
     |   |  | / / レ',二、レ′ ,ィイ|゙/   私は只の数ヲタなんかとは付き合わないわ。
.     |   \ ∠イ  ,イイ|    ,`-' |      頭が良くて数学が出来てかっこいい人。それが必要条件よ。
     |     l^,人|  ` `-'     ゝ  |        さらに Ann.of Math に論文書けば十分条件にもなるわよ。
      |      ` -'\       ー'  人          一番嫌いなのは論文数を増やすためにくだらない論文を書いて
    |        /(l     __/  ヽ、           良い論文の出版を遅らせるお馬鹿な人。
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         あなたの論文が Ann of Math に accept される確率は?
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            それとも最近は Inv. Math. の方が上かしら?
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

7:デフォルトの名無しさん
12/06/30 13:34:52.46
>>1++

8:デフォルトの名無しさん
12/06/30 13:40:29.80
>>1++

9:デフォルトの名無しさん
12/06/30 13:52:22.49
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

10:デフォルトの名無しさん
12/06/30 15:47:13.84
>#include <stdafx.h>
大丈夫か…

11:デフォルトの名無しさん
12/06/30 17:16:12.80
>>10


12:デフォルトの名無しさん
12/06/30 19:14:04.69
C++11とか覚えるのしんどいから3行にまとめてほしい(´・ω・`)

13:デフォルトの名無しさん
12/06/30 20:07:11.89
A a(1);
a = A(2);

としたとき、2行目で、1行目で生成されたインスタンスは消滅すると思いますが、
デストラクタは実行されないようです。
実行されるにはどうしたらいいでしょうか?


14:デフォルトの名無しさん
12/06/30 20:09:05.92
代入だからインスタンスaのデストラクタは実行されないよ。
二行目の「A(2)」は、ステートメントの最後でデストラクタが実行されるけど。

15:デフォルトの名無しさん
12/06/30 20:11:56.59
オペレーター=のオーバーロード

16:デフォルトの名無しさん
12/06/30 20:13:06.32
>>12
新しい文法とライブラリ。autoの変更がかなり面白い。
ラムダで広がる関数周り。関数ポインタにもできなく無いらしい。
コンパイラさんの対応にあと5年はかかるかも。

17:デフォルトの名無しさん
12/06/30 20:14:01.69
>>13
2行目で生成されたテンポラリオブジェクト A(2) は消滅するけど
1行目で生成されたインスタンス a はそのままだよ

18:デフォルトの名無しさん
12/06/30 20:14:36.33
>>16
関数ポインタにできるのは引数なしのやつだけかな

19:デフォルトの名無しさん
12/06/30 20:23:57.91
引数じゃなくて変数キャプチャの有無だろ

20:13
12/06/30 20:25:10.61
a = A(2);によって、aの中身はA(2)になっているので、
aが消滅するときのデストラクタはA(2)のものです。
だから、Aの中で動的に領域をとっていると、
解放されないままになってしまいます。
newを使わないインスタンス作成をできなくしたり、
代入を禁止したりはできないでしょうか?
Aにoperator=を作るのが正当な解決策でしょうか?


21:デフォルトの名無しさん
12/06/30 20:28:19.89
>a = A(2);によって、aの中身はA(2)になっているので、
間違い。aの中身はA(2)のコピー。

C#かJavaから来た人かな?

22:デフォルトの名無しさん
12/06/30 20:31:47.85
URLリンク(codepad.org)
デストラクタ呼ばないとかどこの糞コンパイラ使ってんだ

23:デフォルトの名無しさん
12/06/30 20:33:42.75
>>20
コピーと代入を禁止するにはprivateで宣言しておけばいい
何も宣言しないとデフォルトの定義が作られるから代入出来てしまう

private:
  A(const A&);
  A& operator=(const A&);

24:13
12/06/30 20:33:52.52
Clang++です。

25:13
12/06/30 20:41:30.84
24は偽物です。Javaから来ました。
C++は難しいですが、いろいろ試してみます。
ありがとうございました。


26:13
12/06/30 20:55:32.15
>>22 さん、ありがとうございます。
~A1 が表示されてほしいんですが、
代入ではデストラクタが実行されないようなので、
無理ですね。


27:デフォルトの名無しさん
12/06/30 21:09:47.64
URLリンク(ideone.com)
これなら表示される
この例じゃあまり意味はないが

28:デフォルトの名無しさん
12/06/30 21:37:36.80
そもそもどうやってどちらのデストラクタが実行されたかを確認してるかからして怪しい

29:デフォルトの名無しさん
12/06/30 21:44:15.24
>>25
お前にC++は無理。

30:デフォルトの名無しさん
12/06/30 22:26:53.13
むしろ代入の取り扱いに関してはJavaやC#の方が難しいと思うんだけどね。
C++はCやBASIC、FORTRANなどと同じ、コピーが基本。
負荷は大きいけど、考えることは少ない。
一方、Javaは参照が基本。負荷は小さいけど、いつ複製が必要になるかについて注意が必要。

…みたいなことが、確かJ++セルフマスターブックとかいう本を読んだ時書いてあったなぁ。
J++って、いつの本だよ^q^


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch