FC2ブログ

int main(void)とデストラクタ~とexternを知る

C/C++を高濃度に触ることになり困惑中.
そもそもわかんないよね,なんて思ってる部分を再確認.
mainの引数,戻り値は?
https://oshiete.goo.ne.jp/qa/2445252.html
ただの知恵袋.
答えは,
int main(void)
int main(int argc, char *argv[])
で.前者は引数キニシナーイ.後者は,argument countとargument valueの並び.
https://teratail.com/questions/7310
によると,argcで引数の数を示し,argvで引数に書いてあることを読んでるみたい.そう受け取った(仕様読めよ)
class Hoge{
public:
Hoge(){
----;
};
----;
~Hoge();
}
つまり私はclassの勉強不足なんですよ.
疑問に思ったことは,~Hogeってなに,でした.
なんで同じ名前のやつのチルダがあるの.ははは…;

https://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/ctordtor.html
クラスオブジェクトが作られる際,はじめに実行されるのがpublic内にあるHoge().これ,コンストラクタ.
一方で,クラスオブジェクトが捨てられる際に実行されるのが~Hoge().こっちがデストラクタ.
引数は指定できても戻り値はない.あっても困る気がする…
簡単に言えば,コンストラクタは初期化,デストラクタは後始末なのだから,うまく行ったかどうか以外に戻り値に意味はないし.

いや,うまく行ったかどうかって大事だけど…boolとかで大事に扱ってるのを知ってはいるけど…コンパイル時点で問題があるか判別してくれてたりしないかな.class内なのだし.コンパイラでのチェックは容易そう.それを理由として戻り値がない,とかであってほしい.

そんなこんな調べてるうちにこんな記事.
http://d.hatena.ne.jp/u_1roh/20091108/1257673753
引用
むしろ、次のようなコードがC/C++への「入り口」としてふさわしいんじゃないか。

extern "C" {
__declspec(dllexport) int HelloWorld() { return 0; }
}
え?
全くわかりません.

とりあえず一時しのぎとして,extern "C"ぐらいは調べました.
http://d.hatena.ne.jp/debian36/20080227/1204109794
マングリングを防ぐのに使われる,という記事.
なんかちがう.多分焦点のずれた記事を読んでいるのだろう.

ということで,またの機会に.
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

satsuki

Author:satsuki
記事を消しつつ、ころころ変えながら運用中

最新記事
最新コメント
月別アーカイブ
カテゴリ
訪問者数
検索フォーム
リンク
QRコード
QR