0からの、超初心者C++相談室

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/11/12(月) 14:55:13.35ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
2018/11/12(月) 15:33:07.21ID:uNoTWhhe
まずC#を覚えます
3デフォルトの名無しさん
垢版 |
2018/11/12(月) 15:41:29.72ID:D6ILV7Jx
>>1
2018/11/12(月) 16:05:28.85ID:JkRQG90v
C99に準拠したCプログラムってC++コンパイラで完全にビルドできますか?
2018/11/12(月) 16:09:07.07ID:Uo1L8t18
>>4
型キャストが必要な場合と、C++キーワードに引っかかるケースがあるから、コンパイルできるとは限らない。
2018/11/12(月) 16:21:58.14ID:Uo1L8t18
例えば、classという名前の変数がある場合は、C++ではコンパイルできない。
void *型の変数にint *の値をキャストなしに代入しようとすると、C++ではコンパイルエラー。
7デフォルトの名無しさん
垢版 |
2018/11/12(月) 16:35:33.39ID:D6ILV7Jx
>>4
C99モードにすればおk
$ gcc -Wall -std=c99 -lm round.c
2018/11/13(火) 08:18:22.77ID:0Ele5WZ8
>>5-6
ありがとうございます。
C99では未定義だがC++で定義・予約されている言葉なんかが引っ掛かってしまうんですね。
9デフォルトの名無しさん
垢版 |
2018/11/13(火) 18:41:26.33ID:90McxFB4
extern "C" {}って書いてる?
10デフォルトの名無しさん
垢版 |
2018/11/13(火) 21:54:10.86ID:RYrE2D9k
まずCから
Cも分かってないのにC++とかムリ
11デフォルトの名無しさん
垢版 |
2018/11/13(火) 22:08:24.41ID:bZ0HXQ7X
C99頃から互換性も無いし、別言語だからそうでも無いけど、どっちかと言うとCのprintfに影響受けてる言語の方が多いね。
どっち先に覚えても良いけど、Cのprintfは押さえておいた方がいい。
(ただ、経験的にC++のオブジェクト指向を覚えるにはJavaかC#から入った方がいいので、挫折したらそっちを一旦勉強する事を勧める)
2018/11/13(火) 22:32:00.82ID:qjyppvvr
今の最新の規格ならだいぶ使いやすくなってるはず
とりあえず変数にはconstを付けれ
2018/11/13(火) 23:50:04.90ID:kE0CzrCg
C++とJavaのオブジェクト指向って、なにが違うのでしょうか?
2018/11/13(火) 23:59:43.80ID:700gS9mA
>>13
C++は、new を付けたらポインタ型になるが、Javaはnewを付けたら参照型になる。
2018/11/14(水) 00:06:33.69ID:bV3/fRvw
>>14
JavaよりC++のほうが難しいといわれるのは、ポインタがあるからっていう意味合いが大きいんでしょうか?
2018/11/14(水) 00:19:07.08ID:XVbpx9nj
>>15
C++のポインタは癌だ。どこにでもアクセスできてしまうし、メモリーリークが起きる恐れがある。安全ではない。
チェック付きの配列とスマートポインタを使えば、少しは安全になるが、完璧ではない。
2018/11/14(水) 00:36:22.61ID:XVbpx9nj
まず、ポインタ変数の宣言が初心者殺し。
int* a, b;の場合、bはポインタではない。

関数ポインタはさらに文法が複雑すぎる。
関数ポインタ型の複雑さから逃れるには、typedefを使うとよい。
2018/11/14(水) 01:24:53.28ID:XVbpx9nj
ポインタ型をtypedefしまくった環境がWindowsのWin32 APIだ。
intを大文字でINTと書く。intのポインタをLPINTと書く。unsigned intをUINTと書き、そのポインタをLPUINTと書く。
基本的な関数型は全てtypedefで定義済み。

これなら、ややこしいアスタリスク記号(*)に戸惑う必要はない。
2018/11/14(水) 01:35:38.43ID:XVbpx9nj
型を大文字で書くと分かりやすいという意味で、Win32ではよく使うポインタ型を全て大文字で定義している。
char *にはLPSTRを、const char *にはLPCSTRを用意している。
2018/11/14(水) 03:03:41.18ID:aCPH/+gx
なんてことを昔の人は考えたが、当然スマートポインタのほうがより安全である
21デフォルトの名無しさん
垢版 |
2018/11/14(水) 07:23:04.49ID:XWwMTSMS
>>15
>>14じゃ無いけど、個人的にはfriendクラスとかJavaには無いクラス同士の関係があったりするが最初はそれがどう言う関係か理解出来なかった。
Javaでオブジェクト指向に慣れた後理解出来た。
C++はそう言う独特のオブジェクト指向があるので、まずそこまで複雑じゃ無いオブジェクト指向言語で慣れる方がC++独特のオブジェクト指向の理解に繋がる。
22デフォルトの名無しさん
垢版 |
2018/11/14(水) 11:35:25.78ID:zVp4oIsl
>>18
無駄に覚えることを増やす馬鹿言語

wsとかswとか_sとかいっぱいつけやがってシッチャカメッチャカ
23デフォルトの名無しさん
垢版 |
2018/11/14(水) 11:36:41.07ID:zVp4oIsl
あとtypedefしてる型を型チェックのときに同一とみなすのが意味ない
せっかく型を別けてるのに
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況