2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 Part3

1 :デフォルトの名無しさん:01/10/23 19:26
v(^・^)v

C++ Final Draft International Standard
http://www.kuzbass.ru/docs/isocpp/

STLport
http://www.stlport.org/
Boost C++ Libraries
http://www.boost.org/

2 :v(^・^)v :01/10/23 19:37
>>1 v(^・^)v
なんすか、コレ

3 :v(^・^)v:01/10/23 19:39
>>2
v(^・^)vカエレ!

4 :デフォルトの名無しさん:01/10/23 20:23
前スレでも聞いたけど、ファイルを読み書きするときに
FILE構造体とfstreamとどっちを使ってますか?

5 :デフォルトの名無しさん:01/10/23 20:30
>>4
まず、どうして、そういうことを気にするのかを聞きたい。

6 :なんのつもりだ:01/10/23 20:31
>>1 v(^・^)v
なんすか!、コレ!(怒

7 :なんのつもりだ:01/10/23 20:32
>>4
FILE構造体に決まってんじゃん(w

8 :デフォルトの名無しさん:01/10/23 20:33
CFileだ

9 :デフォルトの名無しさん:01/10/23 20:35
>>>1 v(^・^)v
>なんすか!、コレ!(怒
なんすか!、コレ!(怒

10 :デフォルトの名無しさん:01/10/23 20:36
>>>1 v(^・^)v
意味フメイで怖いんですけど!?

11 :デフォルトの名無しさん:01/10/23 20:39
v(^Д^)v ギャハ!
に似てる?ムカツク!>>1

12 :デフォルトの名無しさん:01/10/23 20:41
v(^・^)v
やっぱりこれがないと。

13 :デフォルトの名無しさん:01/10/23 20:43
v(^・^)v
  (C++)
  ノ∪ヽ

14 :デフォルトの名無しさん:01/10/23 20:44
v(^・^)v
 ( * )
 ノ∪ヽ

15 :デフォルトの名無しさん:01/10/23 20:45
v(^・^)v
(∩∩)

16 :デフォルトの名無しさん:01/10/23 20:46
      ∧_∧
      v(^・^)v
   γ⌒" ̄ `Y" ̄`⌒ヽ
  /´  、   ¥   ノ  `ヽ.
 / ,-ュ人` -‐´;`ー イ` ェ-、 ヽ
 l 「  } i 彡 i ミ/ {  `ノ
 ` `ー' .}    {  `ー'´/ ̄ ̄\
     /      \||  |  グシャ  |
    /   /`ヽ、 i |i  \  _/
   /  ノ    l| | i|   //
   \  `ヽ    |    ||  /
     \ \  l|| l|i | ,, '⌒Y
      ノ  _>‘、|l  |・i/ノ , ノ >>1
     <.,,_/~,-・i |゚;・li。i,・'(__,.J

17 :デフォルトの名無しさん:01/10/23 20:50
なんつーか……最近芸術的なAAが増えたな。

18 :デフォルトの名無しさん:01/10/23 20:50
 ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
v( ^・^)v < こういう生き物です。
 U U   \_____________

19 :デフォルトの名無しさん:01/10/23 20:53
 ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
v( ^・^)v < ミカン星人に近づいたかな?
  )) ))   \_____________

20 :デフォルトの名無しさん:01/10/23 20:57
          ┌─────────
         < ガオガオシテナイーヨ
   v( ^・^)v   └───/|────
    \.\______//
      \ 観鈴ちん /
       ∪∪ ̄∪∪

21 :デフォルトの名無しさん:01/10/23 20:59
>>5
理由は無いけど、同じ事が出来る手段が2つあるから。
パフォーマンスとかポータビリティとかについてはどうなんだろ?

テキストファイルだとfstreamが便利そう
バイナリファイルだとFILEの方が書きやすそう

という漏れの認識はおかしい?
っていうかどうして荒らされてるの?

22 :デフォルトの名無しさん:01/10/23 21:52
fstreamに決まってるだろ。
C++らしい方使っとけ。

23 :デフォルトの名無しさん:01/10/23 22:22
>>21
VCだと、FILEの方が、かなり軽いね。

24 :デフォルトの名無しさん:01/10/23 23:39
 ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
v( *^・^*)v < >>22 FILEに決まってんだろ。
  )) ))    \_____________

25 :デフォルトの名無しさん:01/10/24 11:10
最近C++を勉強を始めました。
静的メンバ関数をclassの宣言外にだそうとする(2)と、
>error C2352: 静的でないメンバ関数の中で呼び出しが正しくありません。
なんて言われてしまいます。
静的メンバ関数は、外にだしちゃダメなのですか?
-----(1)
class mydat {
   static int num ;
public:
   static int foo(){ return num } ;
} ;
-----(2)
class hoo {
   static int num ;
public:
   static int foo();
} ;
static int hoo::foo()
{
   return num ;
}

26 :デフォルトの名無しさん:01/10/24 11:24
// MSDN, C2352
指定された関数は静的なメンバ関数ではありませんでしたが、static メンバ関数内で呼び出されています。

次にこのエラーの例を示します。

class X
{
public:
static void func1();
void func2();
static void func3()
{
func1(); // OK, 静的な関数 func1 を呼び出しています
func2(); // エラー, 非静的関数 func2 を呼び出しています
}
};

27 :デフォルトの名無しさん:01/10/24 11:37
コンパイラ エラー C2724
'identifier' : 'static' をファイル スコープでのメンバ関数の定義に使うことはできません。

static メンバ関数がファイル スコープで定義されています。static メンバ関数は、外部リンケージで宣言しなければなりません。

この誤りは、Microsoft の拡張機能を使っているとき (/Ze オプション指定) には警告となり、Microsoft の拡張機能を無効にしているとき (/Za オプション指定) はエラーとなります。

次にこのエラーの例を示します。

class C
{
static void func();
};

static void C::func(){}; // エラー

28 :デフォルトの名無しさん:01/10/24 14:01
>>25
class hoo {
   static int num ;
public:
   static int foo();
} ;
int hoo::foo()
{
   return num ;
}
int hoo::num;

29 :25:01/10/24 14:41
>>28 様、ありがとうございます。それで、できました。

30 :デフォルトの名無しさん:01/10/25 09:35
純粋仮想関数を使用する意味はなんですか?

31 :デフォルトの名無しさん:01/10/25 09:36
インタフェースの提供>30
下位クラスでoverrideする

32 :30:01/10/25 11:22
>>31 レスありがとう。

C++勉強したてでよくわからんのです。
純粋仮想関数って、なにもないのと同じじゃないかって思うんです。
枠だけ作って、中は下位クラスで作ろうってことなら、
初めから上位に関係なく下位で作ればすむなんて思ったんです。
なんかメリットは、あるんですか?

33 :デフォルトの名無しさん:01/10/25 11:30
>>32
polymorph

34 :デフォルトの名無しさん:01/10/25 12:10
>>32
よくあるAnimal、Cat、Dogの例で説明すると、CatやDogクラスの
オブジェクトをAnimalのインタフェースを使って呼び出したいが、
Animalは抽象的過ぎて実際の処理をまかせられないので、インタ
フェースだけを定義しておく。

こんな時にC++では純粋仮想クラスを使います。

っていうか、GoF本とか読んだほうがいいかも。

35 :デフォルトの名無しさん:01/10/26 10:14
Animal クラスに 足の本数を返すメンバ関数を純粋仮想関数で作る。

class Animal {
public:
  virtual int get_ashi() = 0 ;
}

class Neko : public Animal {
public:
  int get_ashi() { return 4 ; }
}

class Tako : public Animal {
public:
  int get_ashi() { return 10 ; }
}

class Ototake : public Animal {
public:
  int get_ashi() { return 0 ; }
}

と。

36 :デフォルトの名無しさん:01/10/26 10:38
僕はテストの時に楽できるように、親クラスではデフォルト値を返すようなメソッドを設定して、
純粋仮想クラスにはしないことが多いんですが、なんか副作用とか出てきたりするもんなんでしょうか。

37 :デフォルトの名無しさん:01/10/26 10:57
>>36
サブクラスで override を忘れたときに、コンパイラが文句をいってくれない。

個人でやってる分にはどうでもいいけど、複数人で行うプロジェクトの場合には、
「これは絶対にサブクラスで上書きしろ」と主張するために、純粋仮想メソッドに
しておくのが吉。

それに、そもそも「デフォルトの振る舞い」が想定できないケースもある。実装継
承ではなくインターフェース継承を重視するようになると、よくある。

38 :デフォルトの名無しさん:01/10/26 13:53
>>36
オーバーヘッドが掛かり遅くなる

39 :デフォルトの名無しさん:01/10/26 14:22
全スレ900の

> string line_buf;
> ifstream file("text.txt");
> getline(file, line_buf);
> こんなクソコード書いていいのは初心者のうちだけだぞ!

がクソな理由を教えてください。今ちょうどこんなの書いてたので……

40 :デフォルトの名無しさん:01/10/26 14:28
>>38
えっ?

たしかにインスタンス構築時に vptr を 2 回(親クラスのコンストラクタで一回、子クラス
のコンストラクタで一回)埋めるオーバーヘッドはかかるけど、仮想メソッド呼び出しにか
かるコストは同じだと思うが。

41 :デフォルトの名無しさん:01/10/26 16:57
>>40
>たしかにインスタンス構築時に vptr を 2 回(親クラスのコンストラクタで一回、子クラス
>のコンストラクタで一回)埋めるオーバーヘッドはかかる

これだけで十分遅くなる&メモリを無駄に使う気がするけど? そういうことじゃなくて?
もっとも、コンパイラ依存だろうけど。無理して継承関係を採用するのをやめてテンプ
レートにすれば抽象クラスにするよりもっとうまくやってくれるかもしれない。

42 :デフォルトの名無しさん:01/10/26 17:20
>>41
クラスを継承すれば、純粋仮想関数があってもなくても
複数回のvptrのセットが行われるんで、純粋仮想関数が
必要な理由にはならんでしょ?

11 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)