C++相談室 part27

このエントリーをはてなブックマークに追加
>>948
無粋かもしれんが「へ!へ!へ!」はスヴィドリガイロフではなかったか。
953スメルジャコフ:04/02/27 21:22
>>951
おっしゃるとおりでさ。へ、へ、へ。

>>952
それもおっしゃるとおりで。えぇ、そのとおりですとも。
ま、たいした意味は無いよ
>>941
そういう本を探すほうが困難だと思われ。
もしかして持ってる本はCOBOL?
>>955
多分、開発環境の入門書しか見てないんじゃないかな。
言語そのものの参考書は持ってないと。
957デフォルトの名無しさん:04/02/28 02:29
いまメンバ変数のポインタを返すメンバ関数を実装するとします。
ここで返すポインタの指すメンバ変数の内容は見れても良いが、いじれないようにする場合
const obj * cmyclass::get_obj()
{
   return &m_obj;
}
とやればよいのですか?

あと
obj * cmyclass::get_obj() const
とか
obj * const cmyclass::get_obj()
とかいうのも見かけます(勘違いかも)
それぞれどういう意味、使い方なのでしょうか?
教えてくださいませ。
>>957
メンバーでなく自身を基底クラスへキャストできるようにする
というのなら判るんだが。
あるいは生成して新たなインスタンスを値で返すとか。
メンバーへのポインタ返してしまったら自身のデストラクタの実行後も
参照されてる危険があるじゃんか。
>>957
その場合は参照のほうが適切な気はするがそれは置いておいて。
メンバ関数の後につくconstはそれがメンバ変数を変更しない
(+メンバ変数の非constなメンバ関数を呼ばない)ことを保証する。
非constなメンバ関数はconstな参照/ポインタからは呼び出せない。

*の後ろにつくconstは普通の変数のconstと同じだが、返り値につけても意味はないな。
MSのVSを使っています。
クラスにメンバ関数&メンバ変数を沢山詰め込むと
補完候補が多くなって使いずらいと思いました。
そこで必要なメソッドのみを純粋仮想関数のみで
記述したクラスから派生させて実装しているんですが
これって普通ですか?
961r:04/02/28 02:43
>>957
class C {
void f1() const {} // f1は、thisでさされたオブジェクトを変更しない
const int *f2() {} // f2の返すポインタでさされたオブジェクトは、変更できない
int const * f3() {} // f2とおなじ
int* const f4() {} // 返り値として使われた一時オブジェクトのポインタ値を変更できない(?) / 正直、あんまり意味のない書き方なんでやったことない
};
962r:04/02/28 02:45
>>960
動機が尋常じゃない。

まあ、実際にやってるのは「インタフェースと実装の分離」だ。
それ自体は普通。

でも、繰り返すが、動機が普通じゃない。
>>962
まあ、いいんじゃない。
これで少しは分割することを覚えればw
964デフォルトの名無しさん:04/02/28 02:51
>>958-961さん。どうもありがとう。
なるほど〜。

つまりメンバを見せたいだけなら
const obj & cmyclass::get_obj()
という書き方をするということですね。

>メンバ関数の後につくconstはそれがメンバ変数を変更しない
obj * cmyclass::get_obj() const
{
  m_obj = 1;
  return &m_obj;
}
とやったらコンパイルエラーがでるという意味ですね。

無視してたけどすんごい意味があったんだな。



書籍について質問してもよろしいでしょうか。

(0)C++についてそう初心者でもないと思うのですが、
「Essetial C++」は買って得をしますか?

(1)コンパイラ作成者ではありませんが、
「Inside the C++ Object Model」は必要となることが
ありますか?

(2)今からARMとD&Rを買って読む価値はありますか?

(3)「C++ Templates」は読むと衝撃を受けますか?

アマゾンの書評を読んでもパッとしませんでした。
以上、いずれか1つでも、お暇があれば主観的な
意見でもお願いします。
>>965
あえてこちらに書いたのかもしれんが、
書籍専門スレがある。
http://pc2.2ch.net/test/read.cgi/tech/1076851442/
>>965
(0) 1行目に情報量がないので判断できん
 自称・中級者というのはほとんど当てにならん
 何か客観的な内容を示せ

(2)(3) あんたを知らんから判断できん
 知らないで無責任な発言をすればいいのなら,「人によりけり」
スレ汚し申し訳ありませんでした。
書籍専門スレに逝って参ります。
続いてはこちらのトリビアです。

「ANSIで売られているISO/IEC 14882:1998(C++国際規格)の
規格書のPDFの2ページ目の下の空白には

『(C)ISO/IEC 1998
All rights reserved. Unless otherwise specified, no part of
this publication may be reproduced or utilized in any form or
by any means, electronic or mechanical, including
photocopying and microfilm, without permission in writing
from the publisher.
ISO/IEC Copyright Office Case postale 56 CH-1211 Geneve 20 Switzerland
Printed in Switzerland』
の文字列が隠れている。」

これ何へぇ〜?
>>965
(3)だけど、一応英語版について書いておく。
結論から言うとそんなに衝撃的な内容ではない。C++の文法から
逸脱しているわけではもちろなないし、Lokiのような高度な内容でも
ない。

ただ、「templateでもっといろんな事がしたい」という中級者の悩み
をかなり解決してくれるものではある。デザインパターンへの応用
編もある。スマートポインタ自作編もある。

むしろtemplateの初心者に読んでもらいたい内容。どの解説書を
読んでも関数templateやクラスtemplateの簡単な例題に触れて
終わり、というパターンで前進のない人には格好の本だ。
マルチうぜ〜
C++は駄本と良本がはっきり分れているので迷う要素などなにひとつない。
本を買うか迷うようなやつは所詮その程度。

>>980
スレ立てよろしこ
しかし、「Inside the C++ Object Model」みたいな薄い本を
読んで何を知りたいのか、俺はそちらの方が興味ある。
面倒臭がり屋さんがしばしば、
「すぐにわかる○○」、「○日でマスターする○○」などの、
端折った本を買う訳だが、C・C++に関する限り、
分厚い本を買うべきだな。端折りようがないだろ?<C・C++
あの本読むぐらいならコンパイラのアセンブリ言語出力を
解読する方がよっぽどためになるような。
書店に行ってもそういうしょぼい本ばっかで、専門書が全然売ってないのはどういうこと?
K&Rさえも売ってない。
>>976
定番なら手にとって確認する必要もないので通販でいいんでない?
>>976
田舎なんだろ?諦めろ( ´,_ゝ`)プッ



_| ̄|○ オレモナー
>>970,973
レスありがとうございました。参考に
させていただきたいと思います。
>>969
本当だ!!!
>>973>>979
「Inside the C++ Object Model」はそんなに薄くないぞ。英語版
で304ページもある。内容は、クラス、仮想関数付きのクラス、
多重継承をしたクラスなどのvptrやメンバのメモリ内での配列
の仕方が詳しく説明されている。

それからCtor、Dtorの意味論や詳細な使い方の章もあるな。
全体的にこの本にはCtor、Dtorに関する章が多いな。だから
そちら方面の知識がまだ曖昧模糊としている人にお勧め。

(1)のEssential C++はC++に初めて触れる人がC++ 3rdや
C++ Primer 3rdの分厚さにびびってしまった時の定番本。いず
れはそれらの本も読まなければいけないが、手っ取り早くC++
を使えるようになりたい人へお勧めの本だ。ベストセラーの
「独習C++ 3rd」に近い内容。
禿ストラップの本の6.4のサンプルプログラムがコンパイル通らん。
あの禿野郎・・・
>>982
アレは禿げてる人にしかコンパイル出来ないらしいよ。
>>982
「6.4コメントとインデント」?どこにサンプルが?

次スレおねだりage
985某スレ:04/02/29 01:15
ネタスレ立てるくらいならこのスレの次スレを立てるべきだったか・・・
986某スレ:04/02/29 01:16
某スレの1と書くつもりが
987某スレの1:04/02/29 01:26
埋めてみる。
埋め立てage
>>1
991990:04/02/29 12:51
_| ̄|○
992デフォルトの名無しさん:04/02/29 12:51
>>991
素で間違えたのか
>>992
このスレ用に出した書き込みウィンドウ消し忘れてた ̄|_|○
994デフォルトの名無しさん:04/02/29 13:10
記念カキコ v(^-^*)
埋め
埋め
埋めとこう
ダ
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。