底辺SEによる転職のためのスキルアップメモ

うだつの上がらないSEの勉強記録です

C++勉強メモ~新・明解C言語 ~入門編その4~

残業無しだったため7章、8章に取り組んだ。

ポインタはC言語を業務で使っているため別段理解が難しい所は無かった。

しかし、C++になったことで気になる点などはあった。

 

1.newとdelete

C++だとmallocとかcallocは使わないのかな。

newとdeleteだけでメモリの確保と解放は十分なのか。

 

2. #inlucde <new>

C言語じゃ使ったことがないライブラリだ。

try{ ・・・ }

catch(bad_alloc) { ・・・ }

何となくやろうとしていることは分かるが

細かい使い方は分からん。

例外処理らしいが、とりあえずbad_allocを受け取ったら終了すると覚えとけばいいか。

 

3.charのエラー

ポインタで文字列を

char* ptr = "123";

みたいに定義すると、MinGWだと警告が出た。

constつけるとで警告は消える。

原因は、C++は文字列リテラルの変更を許さない仕様にあるようだ。

123という文字列リテラルはconst char*だが、上のような定義を行った場合

暗黙の型変換が行われ、char* になるようだ。

C++は型変換に関してかなり厳しく見るようで

型変換したことを警告として出しているみたい。

 

3.NULL

C++だと

#define NULL (void *)0

とするとエラーが起こるようだ。

知らなかった。

 

4.配列

C言語と異なり、C++はライブラリを使うことが多い?

まあ、入門編だからそうなだけなのかもしれないが。

 

会社のコードはかなり古いので、ポインタをゴリゴリ使って

stringヘッダなんか使わないことが多いからなぁ。

 

ヘッダでライブラリ読み込ませて使おうという

C++の考え方には慣れて行かなければと思う。

 

 

内容的にC言語と被る内容から徐々にC++特有の知識の章に突入しそう。

次やる本もそろそろ選定しておきたい所。