こんにちは。私は今までMS-CやUNIX Cとかでプログラムを組んできましたが、
最近になり仕事でC++を使用するようになりました。
やるのは同じCなので効率よく勉強したいのですが、こんな経歴の自分でも
わかるような解説がされている文献、またはサイトをご存知でしたら教えていただけますようお願い致します。
(特にC++の特徴でもあるクラスについて、詳しく説明されていれば嬉しいです。)

A 回答 (2件)

まず最初にC++のオブジェクト思考は独自の考えに基づいているのでオブジェクト思考に関する書籍は役に立ちません。


C++の作者であるストラウソツラップのかなり身勝手な解釈に基づいています。
この点で、Javaに劣ることはストラウストラップ自身が認めています(1999年Cマガジン10月号を参照)


クラスの概念、継承システム、ネームスペースに関する情報は「CプログラマのためのC++入門」(ISBN4-7973-0962-8ソフトバンクパブリッシング)などにあります。
この本はCが理解できている方のために書かれているのでCの経験者であれば有益でしょう。
    • good
    • 0

猫でもわかるプログラミング


http://www.kumei.ne.jp/c_lang/index.html
C++入門のホームページ
http://www.asahi-net.or.jp/~yf8k-kbys/

これらのページでC++について大変分かりやすく解説されていますのでどうぞ。
私はネットだけでC++の勉強をしてそれなりにかけるようになりました。

C++の標準ライブラリの使い方については、
KAB-studio
http://www.kab-studio.com/
の「STL & iostream 入門」や「Codian」のページで解説されていますのでがんばって勉強してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCの関数をC++とCのどちらからでも呼べるようにするには?

お世話になります。

環境はVC6.0となります。
C++で作成したプログラムから、Cで作成したDLLを呼び出す場合、DLL側のプロトタイプ宣言に「extern "C"」を付加する必要があると認識していますが、
呼び出し側がC++かC言語が分からない場合、Cで作成するDLLにはどのように記述するのが一般的(標準的)でしょうか?

ちなみに調べてみたところ、
以下のように、「__cplusplus」でくくる方法もあるようですが、C++の標準仕様ではないとの記載がありました。

#ifdef __cplusplus
extern "C" {
#endif

int function(int num);
int function2(int num);
int function3(int num);

#ifdef __cplusplus
}
#endif

よろしくお願いします。

Aベストアンサー

DLLプロジェクトに*.defファイルを追加し、
その内容にエクスポート関数名を指定するのが、
最も簡単で、一般的です。
====MyDll.def===
LIBRARY MyDll
EXPORTS
function @1
function2 @2
function3 @3
================
MyDll.lib(エクスポートライブラリ)をリンクす場合は
インポート用ヘッダーでのプロトタイプ宣言を
__declspec( dllimport)で修飾します。
実際にやってみて、細かい点を確認してみてください。

QUNIX CプログラマがC++を学ぶには

僕は今までUNIX上でC言語を使用し開発をしてきました。
しかし、次の仕事からマイクロソフトのVisualStudioのC++で開発するようになったのですが、
全くクラスの考えかたとか、C++の関数がわかりません。

自分のような今までUNIX Cを使用していた人間が、C++を学ぶに最適な
本があったらご紹介ください。

Aベストアンサー

もう十年ほど前になるので、まだあるかどうか不明ですが、私が勉強した本を紹介します。

私もuruchiさんと同じくC言語からC++へステップアップしました。
その時、VC++ Learning Editionを購入しました。
このセットに、マイクロソフトの発行した“C++入門 簡易プログラミングガイド”が含まれていました。

C言語習得者が対象の本で、クラスの考え方や派生・仮想関数等・・・、C言語の立場から非常に分かりやすく書かれていました。
1ページ読むたびに感動し、C++のありがたみが良く分かる非常にすばらしい本でした。
解説とサンプルコードが記述されていますが、特徴としては、なぜC++のこの機能が必要なのか?と言った感じで解説が進んでいきます。
これを読むとC言語の劣るところ、C++の優れているところが具体的に理解できます。
入手困難かもしれませんが、是非候補に入れてください。
ただし、C言語をそれなりにマスターしていないと意味が分からないかもしれません。C言語の中・上級者向きの本でした。

この本は、言語仕様のみの解説です。UNIX→VCならば、その他にMFC等も必要になります。
SDKで十分といわれる方もいらっしゃいますが、MFCを使った方が効率が上がります。

もう十年ほど前になるので、まだあるかどうか不明ですが、私が勉強した本を紹介します。

私もuruchiさんと同じくC言語からC++へステップアップしました。
その時、VC++ Learning Editionを購入しました。
このセットに、マイクロソフトの発行した“C++入門 簡易プログラミングガイド”が含まれていました。

C言語習得者が対象の本で、クラスの考え方や派生・仮想関数等・・・、C言語の立場から非常に分かりやすく書かれていました。
1ページ読むたびに感動し、C++のありがたみが良く分かる非常にすばらし...続きを読む

Q既存のCプログラムをMS Visual C++へ移行して実行したい

同じような質問がでていましたら、すみません。

いままでWS(unix)で作っていたC言語のプログラムをWindowsで実行しようと
しています。
Microsoft Visual C++ 6.0 Proを購入し、
新規でプロジェクトを作成するところで止まってしまいました。

「プログラムをコンパイルして、あるバイナリファイルを読み込み、
指定したファイルへ結果を書き込む」
という操作がしたいのですが、プロジェクトの種類はどれにすればいいのでしょうか?

また、ファイルを読み込む際、メインと関数は別のファイルになっているの
ですが、コンパイルはどのように指定すればいいのでしょうか?

もうひとつ、今までargv[]で入出力ファイルを指定していました。
# (メイン)(入力ファイル) (出力ファイル)のように
この処理はVC++でできるのでしょうか?

VC++の入門の本を購入したのですが、Cのプログラムについては
なかなか載っていないので困っています。
よろしくお願いします。

Aベストアンサー

> プロジェクトは出来たのですが、***.cppと、StdAfx.hというファイルが
> 出来ました。

VC6.0 は良く憶えてないのですが、プロジェクトを新規作成する過程で、MFC を
使う/使わないの選択がありましたか?

もしあれば、「使わない」としてください。

QC言語(UNIX)からVB・VC・C++に移植したことあるかた

C言語(UNIX)からVB・VC・C++に移植した
ことあるかたいませんか?
ある方がいらっしゃいましたら、移行の仕方等教えて下さい。その際注意点等ありましたらお願いします

Aベストアンサー

GUIを持ってるか否かで違います。
またGUIと内部処理が切り離されている場合なら、
GUIを持っていても移植は楽でしょう。

ソースを良く吟味して、

・OSに依存する部分・しない部分
・互換ライブラリのある部分・ない部分
・ライブラリに依存する部分・しない部分

に分けてください。
VCへの移植はOSに依存する部分を入れ替えてしまうことです。
DLLにしておけば、VBからも場合によっては使えるかも知れません。

非常に上手くこの作業を行えば、VC++のフレームワークで
ごく簡単にGUIを追加・移植出来るかもしれません。
無理にGUIにする必要ないならいいんですが。

C++へ移行するのに何か意味があるとお考えでしょうか?
保守の面で意味があるなら、仕様を再度分析した上で、
詳細設計の書き直しが必要です。

QC,C++,C++/CLIの構造体とクラス

C++の構造体・クラスって、メンバのアクセス指定子のデフォルトが
privateかpublicかという違い「だけ」しか全くないのでしょうか?

クラスにおける
value class / ref class
という分類はC++/CLIのもので
これについては
value class の方は C言語の構造体に近いという事でいいでしょうか?

ref classの方は
ネイティブのC++のクラスを
マネージ用にしたようなもので

C++/CLIの構造体は
C++のそれと同じで
OKですか?

そしてそれらの構造体には、値型・参照型といった分類はないのでしょうか?

Aベストアンサー

> ということは、structも継承可、という事でしょうか?

structでも継承可能です。

> 継承のアクセス指定の方は
> クラスと構造体ではどうなるのでしょうか?

class A : Base {};



class A : private Base {};

と等価です。
一方、

struct A : Base {};



struct A : public Base {};

と等価です。

> そして「集成体」というのが初めて知ったのですが
> これはいわゆる、配列や・・・ある条件下でのクラス・・?
> なのでしょうか?

配列と以下の条件をすべて満たすクラスのことです。
・ユーザー定義のコンストラクタを持たない
・非公開または限定公開のメンバを持たない
・基底クラスを持たない
・仮想関数を持たない

ちなみにC言語の集成体は、配列と構造体の総称です(共用体は集成体ではありません)。


人気Q&Aランキング

おすすめ情報