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

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

なぜC+のmain関数はどのクラスにも属していないのか

1 :デフォルトの名無しさん:2010/05/16(日) 14:13:03
語る

2 :デフォルトの名無しさん:2010/05/16(日) 14:15:45
2ゲット
またC系の新言語か。

3 :デフォルトの名無しさん:2010/05/16(日) 14:18:21
もうアイちゃん
糞スレは立てちゃだめって言ったでしょ

4 :デフォルトの名無しさん:2010/05/16(日) 14:21:27
答えは簡単。

C++は過去のシガラミを引きずっているから

5 :デフォルトの名無しさん:2010/05/16(日) 15:43:55
逆になぜ属する必要があるんだ?
アプリケーションのエントリーポイントなんてグローバルに一つあれば十分じゃん。

6 :デフォルトの名無しさん:2010/05/16(日) 18:05:22
C#やJavaはグローバルな関数を作れないから
仕方なく属しているだけ
C++はCとの互換性を無視してまで無理に属させる必要も無い


終了

7 :デフォルトの名無しさん:2010/05/16(日) 19:56:23
>>6
仕方なくである必要ないだろ。
グローバル関数は害悪だ。
だからこそ属す必要がある。

8 :デフォルトの名無しさん:2010/05/16(日) 20:18:09
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

9 :デフォルトの名無しさん:2010/05/16(日) 20:54:15
Java厨がほざいてるならまだ分かるがなぜC++なんだ?
と思ったらC+とかいう俺の知らない言語だった

10 :デフォルトの名無しさん:2010/05/16(日) 21:33:55
mainはグローバルに置く方が自然だよ
JavaやC#ではエントリポイントを持つためだけの意味のないクラスを作ったりする
文法上の制限でクラスに属さないといけないだけ

11 :デフォルトの名無しさん:2010/05/16(日) 23:13:41
新言語C+のことは知らないけど
C++はプリプロセッサで実装されていた時代の都合による

12 :デフォルトの名無しさん:2010/05/16(日) 23:53:55
>>10
だったらmain()を持ったクラスを作らずに
main()からをすぐ動かせる既存のクラスにmain()を追加すればいいじゃん
ぶっちゃけmain()のためだけにわざわざ専用のクラス作る必要ないよ

13 :デフォルトの名無しさん:2010/05/17(月) 00:18:09
再利用可能なクラスにmainを実装して
再利用しにくくしちゃうんですね

14 :デフォルトの名無しさん:2010/05/17(月) 00:20:39
>>13
main はstatic関数なので、ごみになるだけで再利用の邪魔にはならない。

15 :デフォルトの名無しさん:2010/05/17(月) 00:27:26
複数あったらどれが動くんだよ?

16 :デフォルトの名無しさん:2010/05/17(月) 00:31:00
>>15
Java, .NET を勉強してくれ。(やり方が異なる)

17 :デフォルトの名無しさん:2010/05/17(月) 00:33:03
何言ってんだこの馬鹿

18 :デフォルトの名無しさん:2010/05/17(月) 00:41:23
>>14
main method のあるクラスなんて継承したくないぞ

19 :デフォルトの名無しさん:2010/05/17(月) 01:04:42
>>7
Effective C++ を読んでこい

20 :デフォルトの名無しさん:2010/05/17(月) 01:32:20
>>14
意図しないメソッドが呼び出し可能ってどうなのよ

21 :デフォルトの名無しさん:2010/05/17(月) 03:25:33
>>20
わざわざ呼び出しているんだから意図しているだろ。

22 :デフォルトの名無しさん:2010/05/17(月) 03:43:13
>>21
親クラスに main() なんてメソッドがあったらキモイわあ

23 :デフォルトの名無しさん:2010/05/17(月) 07:49:40
>>22
気分で言われてもな。

24 :デフォルトの名無しさん:2010/05/17(月) 13:49:39
え?

25 :デフォルトの名無しさん:2010/05/17(月) 17:12:05
main 関数に関してはクラスに属していなくても不自然ではないと思うなあ。
クラスが何のためにあるかを考えたときに main 関数の役割はそれに当てはまらないわけだし。

26 :デフォルトの名無しさん:2010/05/17(月) 19:00:34
mainを隠蔽することができるなら
属させる意味はあると思われ

27 :デフォルトの名無しさん:2010/05/17(月) 22:59:05
VC#なんか昔はフォームアプリのMainはフォームクラスの中に作られてたけど
今は変更されてProgramっていう無意味なクラスの中に作られるようになってるね

28 :デフォルトの名無しさん:2010/05/17(月) 23:06:57
Startupに使う Main methodは、publicである必要はない。

29 :デフォルトの名無しさん:2010/05/18(火) 16:51:35
そもそもエントリーポイントなんて概念自体が恣意的なものだ。
オブジェクトの一部であってもただの関数であっても良いが、それは言語それぞれの都合による。
どちらが良いとしても大した違いではない、問題としては瑣末なものだ。

30 :デフォルトの名無しさん:2010/05/19(水) 06:57:17
関数の形をしてるが、単にエントリーポイントを指定する書式みたいなもんだからな

31 :デフォルトの名無しさん:2010/05/19(水) 18:15:28
下手にmain()のようなグローバル関数を量産されても困るんだがな

クラスのテスト用によくmain()を複数実装しているのがあるが
ああいうときにmain()がグローバル関数で実装されるとテストしづらくて迷惑

32 :デフォルトの名無しさん:2010/05/19(水) 21:05:26
>クラスのテスト用によくmain()を複数実装しているのがあるが
それはない
せめてmain内で呼び分けてくれ

33 :デフォルトの名無しさん:2010/05/19(水) 21:19:51
>>32
障害が起こったときに、オプション変えるだけでテストできるから便利だぞ。

34 :デフォルトの名無しさん:2010/05/20(木) 00:35:30
>>32
main内でやると面倒くさいぞ
mainをクラスの中にいれておくとclassファイルかjarファイルを追加削除するだけで
切り替えができるからけっこう便利なんだぜ

35 :デフォルトの名無しさん:2010/05/22(土) 21:13:38
クラスに属せる main がかけたら

クラスに属さない main
クラスAに属する main
クラスBに属する main



やっぱクラスに属さない main が特別に見えて
クラスに属さない main から起動するってのは美しくないかい?


36 :デフォルトの名無しさん:2010/05/22(土) 21:14:23
スマン、久々のかきこで上げてしまった orz.


37 :デフォルトの名無しさん:2010/05/22(土) 21:16:55
CコンパチなんだからC++がmain意外のエントリポイントを用意するのは不自然
Cコンパチでないクラスベースの言語がわざわざ野良mainを用意するのは不自然

そんだけの話だろ

38 :デフォルトの名無しさん:2010/05/22(土) 21:22:23
クラスに属するなら実質的にはmainという名前に縛る意味が無いんだよな

39 :デフォルトの名無しさん:2010/05/23(日) 03:31:35
縛らないとどれがエントリポイントなのか分からんじゃん
それともentrypointみたいなキーワードを用意しろと?

40 :デフォルトの名無しさん:2010/05/23(日) 03:33:38
AppMain クラスみたいな出来合いのクラスがあっても良いっちゃ良いかもね

41 :デフォルトの名無しさん:2010/05/23(日) 10:31:56
>>39
リンカでエントリ関数で指定できるから、指定すればいい

42 :デフォルトの名無しさん:2010/05/23(日) 10:33:17
めんどくちゃい

43 :デフォルトの名無しさん:2010/05/23(日) 14:01:21
>>38
う、うん……(´・ω・`)

44 :デフォルトの名無しさん:2010/05/23(日) 16:13:45
ディスってんじゃねーぞメーン

45 :デフォルトの名無しさん:2010/05/31(月) 06:38:10
Javaから他の言語に移ったら
普通の関数のないJavaの方が害悪に見えるがな

46 :デフォルトの名無しさん:2010/05/31(月) 06:44:11
それに適応出来ない程度なら、何でも害悪なんじゃないの

47 :デフォルトの名無しさん:2010/05/31(月) 17:49:02
適応ぐらいできるけど、気持ち悪いと感じる。
staticメソッドって、クラスに関係あるファクトリ関数とか定義する為にあるのであって、
文法上の都合でクラスとなんの関係もないstatic関数を定義せにゃならんのがキモい。
まー、気分の問題なんだが。

48 :デフォルトの名無しさん:2010/06/01(火) 13:37:51
staticつけるかつけないかの違いだけだろ

49 :デフォルトの名無しさん:2010/06/01(火) 21:54:40
どのクラスにも属していないC++の関数は無数にあるのに、なぜmainだけを気にするのか

50 :デフォルトの名無しさん:2010/06/01(火) 22:25:59
mainを隠蔽できないからだろうな

51 :デフォルトの名無しさん:2010/06/26(土) 09:15:55
暇だからです

52 :デフォルトの名無しさん:2010/06/26(土) 22:32:08
孤独を愛しているから

53 :デフォルトの名無しさん:2010/06/26(土) 22:39:07
>>50
クラスごと隠蔽したらいいのに。

54 :デフォルトの名無しさん:2010/06/28(月) 21:38:28
別にmainだけじゃなく、WinMainとか、OwlMainとか、色々あるじゃん


55 :デフォルトの名無しさん:2010/07/26(月) 18:50:51
実際にはスタートアップルーチンからmain()は呼ばれます。
main()からプログラムが走ってるわけじゃない。
ま、スタートアップルーチンの作り次第ってこと。

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)