[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:13 / Filesize : 241 KB / Number-of Response : 948
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++は難しすぎ 難易度:2



1 名前:前々スレ985 mailto:sage [03/12/18 06:52]
理解できないわけないだろ!
デザパタも知らずにC++使いの質を下げるC厨には げんあり

前スレ達
難易度:1 pc2.2ch.net/tech/kako/1058/10586/1058675178.html
難易度:2 1pc2.2ch.net/test/read.cgi/tech/1063323615/

45 名前:デフォルトの名無しさん mailto:sage [03/12/29 22:29]
リファレンス(T&)渡しを的確に使用している奴はいるのか。
ポインタ渡しを使った場合と効果は同じだけど、
引数で渡すデータを変更しない場合は、リファレンスを使い、
値を変更する場合はポインタを使うようにしているのだが、
それ以外で適切な使い方を知っている猛者はご教授願いたい。
(コピーコンストラクタやoperator関数の引数ってのはなしで。)

46 名前:デフォルトの名無しさん mailto:sage [03/12/29 22:33]
>>45
中学生。


47 名前:デフォルトの名無しさん mailto:sage [03/12/30 01:29]
>>45
たとえばあるオブジェクトを指すクラスを作るときで、
そのオブジェクトをコンストラクタ以外では指定できないようにしたいとき、
参照型のメンバ変数とすることがとても有効な場合がある。


48 名前:sage mailto:sage [03/12/30 02:47]
適切、かどうかは判断しがたいが
templateをぽちぽちいじるようになれば、リファレンスは避けて通れなくなる。
いちいちポインタを要求するtemplateってのは使いづらいからね。


49 名前:デフォルトの名無しさん mailto:sage [03/12/30 03:56]
>>45
More Effective C++でも嫁

50 名前:デフォルトの名無しさん mailto:sage [03/12/30 06:42]
>>45
>引数で渡すデータを変更しない場合は、リファレンスを使い、

変更するかしないかはconstの有無で判断するもんだと思う。
ポインタでもリファレンスでも。

51 名前:デフォルトの名無しさん mailto:sage [04/01/03 22:52]
てかこのスレの住民は(>>48以外?)モダーン本も読んでないのか?

TypeTraitsで適切な引数型を自動的に検索できるのは
参照型のシンタックスがコピー渡しと同じだからだろうが。


52 名前:デフォルトの名無しさん mailto:sage [04/01/04 00:44]
テンプレート関係の勉強をしようにも、
頭が悪いので理解できない。

初心者用の本だとスタッククラスに対して、
int型やchar型をテンプレート引数にとる簡単な例ばかりで、
応用例は、ほとんど載ってない。

標準ライブラリとテンプレートのからみを説明している本は、
中級者以上の本ばかりなので、難しくて理解できない。
(特にsetやlistテンプレートの実装部分とかの説明が理解不能)

この辺のからみについて、何かわかりやすい本or
最適な勉強法はあるのでしょうか。

53 名前:デフォルトの名無しさん mailto:sage [04/01/04 01:07]
>>52
ttp://www.amazon.co.jp/exec/obidos/ASIN/0201734842/
試しにこれ読んでみれ。



54 名前:デフォルトの名無しさん mailto:sage [04/01/04 01:09]
俺はlistやhashtableを実装(再発明)したよ。
lokiやboostのコードを読み漁りながらだったんだけど、
type traitsやfunctionalなんかが中心だったかなあ。
カナーリ勉強になったよ。

55 名前:デフォルトの名無しさん mailto:sage [04/01/04 02:46]
「JavaプログラマーのためのC++」ってないかね。
JavaのStringやVectorと対比させてSTLを教えてほしい。
newとdeleteの管理をちゃんとやるための設計のしかたとか。


56 名前:デフォルトの名無しさん mailto:sage [04/01/04 10:46]
newとdeleteの管理すらできないうちからSTLに手を出したりするから
C++がわからなくなる。
テンプレート(機能)は鬼門なので他が十分に理解できるまでとっておく。
STL(ライブラリ)はもっと鬼門なのでテンプレートが十分に理解できるまでとっておく。

あとは車輪の再発明はC++の学習には欠かせない要素。
自分で作ってはじめて理解できる。それがC++。

57 名前:デフォルトの名無しさん mailto:sage [04/01/04 21:51]
読む→試す→作る→だから身につく

58 名前:デフォルトの名無しさん mailto:sage [04/01/05 01:15]
どこかで見たことあるモンクだと思ったら…


そんなにこわがることないのにー ;-p



59 名前:デフォルトの名無しさん mailto:sage [04/01/06 11:58]
>>56
STL(あるいはその再発明)を使わなけりゃ例外安全な
deleteの管理なんて出来ないだろうが。

60 名前:sage mailto:sage [04/01/06 22:48]
>>59
そんなことはないない


61 名前:デフォルトの名無しさん mailto:sage [04/01/07 02:13]
出来ないというか、やる気はせんな。

62 名前:デフォルトの名無しさん [04/01/11 21:41]
>>59
auto_ptrはSTLじゃありませんが何か?

63 名前:デフォルトの名無しさん mailto:sage [04/01/11 21:46]
やっぱり安全なdeleteの管理はできそうもないな。
なぜならauto_ptrはSTLだからね。



64 名前:デフォルトの名無しさん [04/01/12 00:25]
GNU関係のプログラム書いてたら99%はANSI Cだから素のポインタ操作も
最初は苦しむが慣れたら明確かつ究極的なインタフェースとして使えるよ。
サーバ系で一リクエストに何千回も処理する箇所があればオブジェクト指向系
の糞重い&メモリ食いな処理は命取りになる。
そういう時にポインタでデータをきちきちに詰める。
1バイト単位できっちり。
JAVAやC#みたいなインタプリタと違って最適化やVMも必要ないから
十分なパフォーマンスが得れる。
だが熟成には何年何ヶ月と要するよね。
適材適所があるわけだから一概にC++はダメって言い切るのはどうなのかな?


65 名前:デフォルトの名無しさん mailto:sage [04/01/12 00:52]
C# はインタープリタじゃないわけだが。
Java も最近 JIT 方式のものがあったりするし。

揚げ足取りスマソ。

66 名前:デフォルトの名無しさん [04/01/12 01:12]
やっぱし テンプレートは理解しておいた方がいいのかなぁ。
難しい..

67 名前:デフォルトの名無しさん mailto:sage [04/01/12 01:16]
>>66
最低限、STL のコンテナが使えれば OK だと思う。
それが出来たら Modern C++ Design でも読みつつ Loki の内容理解とか。

68 名前:デフォルトの名無しさん [04/01/12 01:17]
>67
了解。頑張ります。

69 名前:デフォルトの名無しさん [04/01/12 01:21]
.NET自体がおおざっぱに捉えてインタプリタだと思うんだが。

70 名前:デフォルトの名無しさん [04/01/12 01:24]
>>69
修行が足りん 出直してこい

71 名前:デフォルトの名無しさん [04/01/12 01:25]
>>70
C#とかJAVAって386コード吐けるんですか?

72 名前:デフォルトの名無しさん mailto:sage [04/01/12 01:41]
>>71
JIT コンパイルで検索しる。

73 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:25]
>>67
テンプレートは
template< typename T >くらいなら分かるけど、
template< int n >とか見てボカーンでした。

あと、
template<class T> class shared_ptr
{
(略)
template<class Y>
explicit shared_ptr(Y * p): px(p), pn(p, checked_deleter<Y>()) // Y must be complete
{
detail::sp_enable_shared_from_this(p, p, pn);
}

も全然理解できません。
template<class Y>って・・・・
shared_ptrってTのポインタを抱えるクラスだと思うけど
どうしてYが出てくるのやら・・・

いい解説ページか本はないでしょうか。



74 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:29]
それどころか、Modern C++ Designの表紙をめくったところで

template<int m1, int l1, int t1, int m2, int l2, int t2>
Physical<m1+m2, l1+l2, t1+t2> operator*(Physical<m1,l1,t1> lhs
                     Physical<m2,l2,t2> rhs )
{
  return Physical<m1+m2, l1+l2, t1+t2>::unit*lhs.value()*rhs.value();
}

がいったいなんのことやら、と。

75 名前:デフォルトの名無しさん mailto:sage [04/01/12 07:46]
>いい解説ページか本
Modern C++ design しかない!

>>74
そのテンプレートはModern本を読み進めて行かなければ
ほぼ理解不能だと思われる。
loki風のテンプレートの用法に慣れちゃえば
極めて普段どおりのやり方になるので、まずはModernの読破を。

76 名前:デフォルトの名無しさん mailto:sage [04/01/12 15:57]
>>73
shared_ptr の コンストラクタにある、template< class Y > は、

shared_ptr< void* >( new Object() ); とかやっても
きちんと Object のデストラクタを呼び出すための仕掛け。

大雑把に書くと以下のようなコード。

struct deleter_base
{
 virtual void destroy() = 0;
 virtual ~deleter_base(){}
};
template< class T > struct deleter : public deleter_base
{
 deleter( T * p ) : p_(p)
 void destroy() { checked_delete( p_ ); }
 T * p_;
};
struct shared_count
{
 template< typename Y >
 shared_count( Y * p ) : pd_( new deleter<Y>( p ) ) ... { ... }
 // カウンタが 0 を示したときに pd_->destroy を呼ぶような処理
 // これで、Y は正しく delete される。
 deleter_base * pd_;
};

みたいなの。

77 名前:デフォルトの名無しさん mailto:sage [04/01/13 23:13]
templateをしっかり学習したければHaskellを
覚える事をお勧めする。

78 名前:デフォルトの名無しさん mailto:sage [04/01/14 09:57]
>>77
TypeListを処理するのに再帰を使用するとかが
関数型言語っぽいっていう理解はOK?
その他、あれば解説よろしく

79 名前:デフォルトの名無しさん mailto:sage [04/01/14 13:50]
>>78
アダプタとか関数オブジェクト廻りの技術が関数型っぽい。
あと演算子のオーバーロードも関連も型クラスとの関連が。
後、boostとかだとそのままずばりlambdaがある。

80 名前:デフォルトの名無しさん mailto:質問age [04/01/16 18:07]
まだ勉強中なんでツッコミ歓迎。

C++のtemplateとかoperatorって>>73,76みたいな
「きちんと面倒見るためにはそこまでしなきゃ(考えなきゃ)いけないのかよ」
ていうのが実務上嫌いなんだが、反面そこが趣味的には面白かったりする。
やっぱり簡単な使い方以外のC++はヲタク用言語という感じがぬぐえない。

で、ちょっと質問。
ランダムアクセス可能なiteratorで出力を加工することは可能かどうか。

template< class T > my_iterator {
private: T * current;
public: T & operator*(){ return *current; }
};

関係の無いところを端折ると上のように書いているんだが、例えば

public: T & operator*(){ return 1 + *current; }

は戻り値がT&だから出来ない。かといって戻り値をTにすると代入が出来ない気がする。

81 名前:デフォルトの名無しさん mailto:sage [04/01/16 18:20]
>>80
すぐ考え付くのは、

template <class T> my_iterator {
private:
    T * currrent;
    struct T_ref {
        T_ref(T &r) : ref(r){}
        operator T() {return ref + 1;}
        template <typename U>
        T_ref &operator=(const U &u) {ref = u; return *this;}
        T &ref;
    };
public:
    T &operator*() {return T_ref(*current);}
};

色々問題がありそうだが。

82 名前:デフォルトの名無しさん mailto:sage [04/01/16 18:52]
>>81
operator T()なんて使い方が出来るのか。サンクス。
ただ加工に使う「+ 1」の値がmy_iteratorに入ってると
T_refのメンバにmy_iteratorへの参照も入れなくちゃいけなくて複雑になりそうだな。

そもそも加工をoperatorに頼っちゃいけないのだろうか。

83 名前:デフォルトの名無しさん mailto:sage [04/01/17 00:29]
プロキシオブジェクト使わないと厄介なところだな。
「参照じゃないと書き換えられない」みたいな問題は
More Effective C++(だっけ)の二重配列クラスの実装なんか
まさしく参考になると思う。




84 名前:hiraoka [04/01/20 02:12]
>>76
補足すると、継承したクラスのポインタに対応するため。
>>80
boost::transform_iteratorがおすすめ。
自分で書きたければ、
T& operator*()と
T operator*() constを定義する方法もあると思う。

85 名前:hiraoka [04/01/20 02:13]
>>76
補足すると、継承したクラスのポインタに対応するため。
>>80
boost::transform_iteratorがおすすめ。
自分で書きたければ、
T& operator*()と
T operator*() constを定義する方法もあると思う。

86 名前:デフォルトの名無しさん mailto:sage [04/01/20 04:48]
hp.vector.co.jp/authors/VA000092/jokes/strup.html

87 名前:デフォルトの名無しさん mailto:sage [04/01/21 00:27]
「C++は難しすぎ」 byコンパイラメーカ一同

88 名前:デフォルトの名無しさん mailto:sage [04/01/21 18:41]
コンパイラ屋さんってC++コンパイラを書くときに言語は何を使ってるんですかね?
Cなのかな?C++なのかな?
Cだと大変そうですね。

89 名前:デフォルトの名無しさん mailto:sage [04/01/21 21:58]
最初のC++はCに変換するプログラムで、Cで書かれていたそうだ。
最初のCはアセンブラで書いたそうだ。
最初のアセンブラは機械語で書かれた。バイトコードに直すのは人力でやった。

最近の商用のは知らんが、ほとんどCで書かれているんじゃないか?

90 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:47]
“yacc”とか“コンパイラコンパイラ”でぐぐれ。

91 名前:デフォルトの名無しさん mailto:sage [04/01/22 07:03]
まともなエラー処理を書こうと思ったらyaccじゃ無理だろ。


92 名前:デフォルトの名無しさん mailto:sage [04/01/22 16:16]
まあ、yaccはあくまでコンパイラ作成を支援するものだし。

93 名前:デフォルトの名無しさん mailto:sage [04/01/22 16:34]
じゃあなんでコンパイラ・コンパイラなんて大仰な名前がついてるんだ?



94 名前:デフォルトの名無しさん mailto:sage [04/01/22 17:45]
pc2.2ch.net/test/read.cgi/tech/1070089173/

続きはこちらでどうぞ。

95 名前:73 mailto:sage [04/02/01 17:05]
>>75,76,77

急に忙しくなってレスが遅れましたが、参考になりました。
ありがとうございます。

96 名前:自称C++厨をクビにせよう運動 [04/02/09 10:20]
グゴゴゴゴゴ!!!

いまこそ、プログラマ革命を起こすときだ!
(亜ぼーんする愚か者には核ミサイル無量大数本分の死を!)

 〜 自称C++厨の化けの皮をはがせ!運動展開中! 〜 
(本当は自称C++厨なんてたいしたことがない、上辺だけなのだ! 真実を見よ!)
大半のC++厨はインチキ詐欺師の卑怯者!
オブジェクト指向も知らなければデザインパターンも知らない悪い奴である。
しかも悪名高いウォータフォール信者と来た! 許せん! 今こそ正義の一撃を!
大半のC++厨は汚いコードを書いてチームをわざと混乱させメンテナンスの手間を増大させる悪魔なのだ!
大半のC++厨は自己保守的で官僚的で革新性が無く
自分のスキルの程度を誤魔化すためにわざとソースコードを読みにくくしているのだ!
(こいつらはわざと読みにくくすれば他人が解読するのにに手間がかかるので
凄いと思いこまれると勘違いしている馬鹿どもなのだ)

こんな卑怯者が許されるか!

蓋を開けてみればただのC言語しかできないとんでもない低脳である。

こんな悪魔のような給料泥棒なやつが金をもらっていることは絶対に許されるべきではない!
即刻減給するかクビにしてやるべきである!

このような卑怯なC++厨の行為は宣戦布告と見なさなければならない行為であり
大義名分を持って即刻解雇すべきである!

自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ!
自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ!
自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ!


正義は勝つ!悪の枢軸・自称C++プログラマをこの世から抹殺せよ!

97 名前:デフォルトの名無しさん mailto:sage [04/02/09 11:08]
>>96
暴れるのはマ板だけにしとけ知的障害者。

98 名前:デフォルトの名無しさん [04/02/09 19:38]
>>96
ただのC言語すらできないヒトは どうすればいいですか?

99 名前:デフォルトの名無しさん mailto:sage [04/02/09 19:42]
>>98
それは俺様のことか?

100 名前:デフォルトの名無しさん mailto:sage [04/02/09 19:50]
>>98
(゚Д゚)

>>99
そうだ

101 名前:デフォルトの名無しさん mailto:sage [04/02/10 01:39]
>>96
おまえもHaskelとかScheme勉強しろよ。

102 名前:デフォルトの名無しさん mailto:sage [04/02/10 02:20]
HaskelやSchemeを勉強しても仕事の役に立つとは思えない

103 名前:デフォルトの名無しさん mailto:sage [04/02/10 02:39]
デザインパターン勉強しても仕事の役立つとはおもえない。



104 名前:デフォルトの名無しさん mailto:sage [04/02/10 02:49]
Modern C++ Designが仕事の役に立つとは思えない。

105 名前:デフォルトの名無しさん mailto:sage [04/02/10 03:04]
仕事が俺の役に立つとは思えない。

106 名前:デフォルトの名無しさん [04/02/11 18:52]
松戸ナルドがおいしいとは思えない。

107 名前:デフォルトの名無しさん mailto:sage [04/02/11 18:55]
松戸にもマクドナルドがあったのか

108 名前:デフォルトの名無しさん mailto:sage [04/02/11 20:55]
イノセンス、それは いのき

109 名前:デフォルトの名無しさん [04/02/11 23:34]
土佐、それは高知

110 名前:デフォルトの名無しさん [04/02/12 00:50]
北関東の県が必要だとは思えない。

111 名前:デフォルトの名無しさん mailto:sage [04/02/12 12:15]
>>110
群馬 栃木 茨城というわかりやすい駄目トリオがなくなると、
神奈川 埼玉 千葉のどんぐりの背くらべトリオによる
No2争いが激化する。

112 名前:デフォルトの名無しさん mailto:sage [04/02/12 13:35]
横浜>神奈川
ディズニーランド>千葉
さいたま>埼玉

113 名前:デフォルトの名無しさん mailto:sage [04/02/15 22:15]
>>107
あるよ。まんまえに。いってみ



114 名前:デフォルトの名無しさん mailto:sage [04/02/22 21:06]
テムプレートってどういうときに使うんでつか?
難しすぎて頭がおかしくなります。
たとえば1から100まで足すプログラムに使いませんよね?

115 名前:デフォルトの名無しさん mailto:sage [04/02/22 21:14]
使えますが

116 名前:デフォルトの名無しさん [04/02/22 21:18]
#include <iostream>
template <int n> struct Sum {
enum { X = Sum<n-1>::X + n };
};

template<> struct Sum<1> {
enum { X = 1 };
};

int main()
{
std::cout << Sum<100>::X;
return 0;
}


117 名前:デフォルトの名無しさん mailto:sage [04/02/22 21:19]
>>2
15歳ですべて悟った俺は変人でしょうか

118 名前:デフォルトの名無しさん mailto:sage [04/02/22 21:47]
テンプレートを使いこなしたかったら Modern C++ Design を読むべし、そうしなければ全く始まらない。
テンプレートはOOその他従来のパラダイムのように、プログラムを書くための物ではない(もちろん使えるが、そういうやり方は古いやり方)
Modernなテンプレートプログラムとは、プログラムを生成するプログラムを書くのだ。
例えばデザインパターンのパターンを見て、そのパターンを実装するのが従来のやり方。
テンプレートを使う場合は、そのパターンを生成するプログラムを書くのだ。
一つ上のステージからプログラムを見下ろす様にプログラムをするんだ。


119 名前:名無し募集中。。。 mailto:sage [04/02/22 22:01]
>>115-116
それは1から100まで足すプログラムというより、
1から100まで足してある数値を取り出すプログラムでは?


120 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:17]
実行時に足すかコンパイル時に足すかの違いでしかない。

121 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:30]
コンパイラに足させるプログラム

122 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:37]
template<int i> class sum
{
public:
int operator() {
return i + sum<i - 1>()();
}
};

template<> class sum<1>
{
public:
int operator() {
return 1;
}
};

じゃあこうすれば良いのか

123 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:55]
>>122
オプティマイズがかかったらやっぱりコンパイル時に足していそうだな(藁



124 名前:デフォルトの名無しさん mailto:sage [04/02/22 23:22]
オプティマイズは考えなくていいんじゃないか?
設定やコンパイラによっても違うし。

コンパイル時に計算させるか、実行時に計算させるかの意図がコードに現れてればいいんじゃないかな。

125 名前:デフォルトの名無しさん mailto:sage [04/02/22 23:31]
どうしてもというのなら

template<int i> class sum
{
volatile int v;
public:
sum() : v(i) { }
int operator() {
return v + sum<v - 1>()();
}
};


126 名前:デフォルトの名無しさん mailto:sage [04/02/22 23:32]
sum<i - 1>()();

こうじゃなきゃだめだな

127 名前:デフォルトの名無しさん mailto:sage [04/02/22 23:35]
おまいら >>114 の質問に答えてないよ。

「使いませんよね?」と聞いているのに、「使える」という答えはおかしい。
いつもそうゆうコードを書くかどうかを聞いているので、可能不可能を聞いているのではない。

漏れの答えは、そんなことには多分使わない。

128 名前:デフォルトの名無しさん mailto:sage [04/02/23 00:28]
どうでもいいけど、
int operator() {
の宣言は、
int operator()() {
でないとコンパイル通らなくないか?

勘違いだったらスマソ

129 名前:デフォルトの名無しさん mailto:sage [04/02/23 00:34]
yes

130 名前:デフォルトの名無しさん mailto:sage [04/02/23 00:40]
>>127
どう使うかって事にもよるね、例えばその計算結果から型を選択するとかいった処理なら
テンプレートを使うしかないし・・・
最近はJavaやC#の場合、リフレクションとかもあるので無茶な事をすれば実行時にもできるかもしれんが、余りやりたくは無いねぇ。

131 名前:デフォルトの名無しさん mailto:sage [04/02/23 00:45]
リフレクションいいよね。

C++で実現したいんだけど、どっかに参考になるコードないかなぁ。

132 名前:デフォルトの名無しさん mailto:sage [04/02/23 08:37]
むかーしリフレクションっぽいコードをC++で書いた。
お前のコードじゃねえだろどこで派食ったといわれて結構へこんだ。
まああれだ、スマートに書くか効率良く書くかの二者択一になるからやめとけ。

133 名前:デフォルトの名無しさん mailto:sage [04/03/01 13:32]
C++厨のレベルの低さが垣間見えるスレですね



134 名前:デフォルトの名無しさん [04/03/03 18:26]
これからなんだよ、まだこれからこのスレはすんげぇ面白くなるんだよきっと。
きっと1さんがこのスレを優良スレにしてくれるんだよ。
1さんがこのスレを名スレにしてくれるんだよ。
1さんが素晴らしいネタを提供してくれるんだよ。
だからみんな、これからの1さんの書き込みを楽しみにしようよ。
これからこれからこれからこれからまだまだまだまだ…

135 名前:デフォルトの名無しさん [04/03/04 18:37]
1さんって俺じゃねーか。おまえらまだスレの連番付け間違えた事チマチマ恨んでるのか?
でもせっかくだから盛り上げていくか?

>>133
а≧○иξ⊃XγΘ△Φ?

136 名前:デフォルトの名無しさん [04/03/04 19:09]
>>135
a=$д゜【@()πr2+3.14

137 名前:デフォルトの名無しさん [04/03/05 23:13]
>>136
Пкδ\Δν⊃∃ю!

138 名前:デフォルトの名無しさん [04/03/06 02:10]
>>114
『Effective C++』の41項参照。

例えばWin32の各種ハンドル型をデストラクタでクローズするラッパクラスを作るときに使った。
型は違う(HANDLE・HINTERNET・SC_HANDLEなど)。でも処理は同じ(最後にクローズする)。

『Modern C++ Design』の書き方を許してくれる職場は少ないと思う。
理解できる人間がいなくてメンテナンス性が下がるため。(理解さえできていれば本当は上がってるんだけどね。)
そういうときは仕方ないので宣言マクロ/実装マクロにする。それなら理解できる人も多い。

あとは標準ライブラリのコレクションを使えないときに(車輪を再発明するために)使った。
このときはメモリの動的確保をしないという制限があった。
(Allocatorを書く方法もあるが、上と同じ理由でそれが許されることは少ないと思う。)

139 名前:デフォルトの名無しさん mailto:sage [04/03/07 20:04]
>Allocatorを書く方法もあるが、上と同じ理由でそれが許されることは少ない
随分厳しいですな

もうちょっと分りやすい構造になればいいんですがね > template
漏れはもう boost から戻れない体になってしまいました。

140 名前:デフォルトの名無しさん [04/03/15 11:12]
三大悪の枢軸国の紹介
 C++帝國(北朝鮮) ← C++厨代表の正体は、何と! 金正日だった!
 VB帝國(イラン) ← VB厨代表はイランに潜伏していいた!
 Perl帝國(イラク) ← Perl厨代表フセインがついに逮捕された!

141 名前:デフォルトの名無しさん mailto:sage [04/03/15 13:59]
>>140
C++が分らなくて火病でも起こしたか?


142 名前:デフォルトの名無しさん mailto:sage [04/03/18 16:38]
Java帝国(オウム) ← Java厨代表は何と!地図夫(趣味:ソフマップ通い)だった!


143 名前:デフォルトの名無しさん [04/03/29 19:49]
鯖削除は難しすぎ



144 名前:デフォルトの名無しさん [04/04/02 08:21]
Modern C++ Designって簡単なことしか書いてないのにね。
それを難しいというのはよほどの馬鹿なんだろうね。
そんな馬鹿がソフトウェア開発にたずさわるのは社会的な悪だね。
医者だと無免許医は摘発されるのに
自動車だと無免許運転は摘発されるのに
プログラマーだけ低能でもやっていけるというのが諸悪の根源。

C++難しいとかいう脳障害の低能は
そもそもプログラミングに向いてないんだから
とっとと転職しろっつーの。

145 名前:デフォルトの名無しさん mailto:sage [04/04/02 09:01]
>プログラマーだけ低能でもやっていけるというのが諸悪の根源。
大工よりまし。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<241KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef