
C++の構造体・クラスって、メンバのアクセス指定子のデフォルトが
privateかpublicかという違い「だけ」しか全くないのでしょうか?
クラスにおける
value class / ref class
という分類はC++/CLIのもので
これについては
value class の方は C言語の構造体に近いという事でいいでしょうか?
ref classの方は
ネイティブのC++のクラスを
マネージ用にしたようなもので
C++/CLIの構造体は
C++のそれと同じで
OKですか?
そしてそれらの構造体には、値型・参照型といった分類はないのでしょうか?
No.2ベストアンサー
- 回答日時:
> ということは、structも継承可、という事でしょうか?
structでも継承可能です。
> 継承のアクセス指定の方は
> クラスと構造体ではどうなるのでしょうか?
class A : Base {};
は
class A : private Base {};
と等価です。
一方、
struct A : Base {};
は
struct A : public Base {};
と等価です。
> そして「集成体」というのが初めて知ったのですが
> これはいわゆる、配列や・・・ある条件下でのクラス・・?
> なのでしょうか?
配列と以下の条件をすべて満たすクラスのことです。
・ユーザー定義のコンストラクタを持たない
・非公開または限定公開のメンバを持たない
・基底クラスを持たない
・仮想関数を持たない
ちなみにC言語の集成体は、配列と構造体の総称です(共用体は集成体ではありません)。
なるほど♪
ありがとうございます。
え~っと、つまり…
・非公開または限定公開のメンバを持たない
↓
privateやprotectedを持たないつまり
全部public
・基底クラスを持たない
↓
継承してない
・仮想関数を持たない
↓
virtualの文字が見当たらない
という言い方も出来るということですか?
そしてこの
・ユーザー定義のコンストラクタを持たない
という部分は、どういう意味なのでしょうか…?
コンストラクタって、書かなくてもできましたっけ…??
「中身なし」って事でしょうか?
No.3
- 回答日時:
> という言い方も出来るということですか?
そうですが...
> virtualの文字が見当たらない
については、マクロで置換されている可能性もあるので、その部分だけを見て判断するのは危険です。
> ・ユーザー定義のコンストラクタを持たない
> という部分は、どういう意味なのでしょうか…?
> コンストラクタって、書かなくてもできましたっけ…??
クラスにコンストラクタをまったく定義しない場合、デフォルトコンストラクタとコピーコンストラクタが勝手に生成されます。
なるほど
そういう意味では、確かにそうですね。
そして、コンストラクタについては
言われてみるとそういう文を見たことがあった気がしました。(いつも大抵いじってたので、すっかり忘れてました。)
ありがとうございます。
No.1
- 回答日時:
> C++の構造体・クラスって、メンバのアクセス指定子のデフォルトが
> privateかpublicかという違い「だけ」しか全くないのでしょうか?
C++では、構造体も共用体もクラスの一種です。
クラスキーがstructのものを「構造体」、unionのものを「共用体」と呼んでいるにすぎません。
クラスキーがclassのものとstructのもののでは、メンバのアクセス指定と継承のアクセス指定のデフォルトが異なります。
> value class の方は C言語の構造体に近いという事でいいでしょうか?
どちらかといえば、C++の集成体に近いかも。
あとはメモリ管理の方法とか...。
ありがとうございます。
確認ですが
value class の方は、アンマネージですよね?
そして、
>クラスキーがstructのものを「構造体」、unionのものを「共用体」と呼んでいるにすぎません
ということは、structも継承可、という事でしょうか?
継承のアクセス指定の方は
クラスと構造体ではどうなるのでしょうか?
そして「集成体」というのが初めて知ったのですが
これはいわゆる、配列や・・・ある条件下でのクラス・・?
なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JTableのイベント取得方法
-
関数内の変数に<summary>コメン...
-
C,C++,C++/CLIの構造体とクラス
-
ひとつのファイルにクラスは1つ?
-
c++,ある関数のクラスから別の...
-
違うクラスからの変数の共有化
-
C# インターフェイスの実装
-
visual studioのデザイナ画面で...
-
C#にて別クラスの関数を使いたい
-
C++ クラス名の前のdefine
-
jQueryを使ってhtmlのidとclass...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
エクセルVBA 画像を貼り付ける...
-
EXCEL VBAにて動的にCheckBOXを...
-
java eclipse 型に解決できません
-
private static という変数の修飾
-
パワーポイントのVBAでテキスト...
-
インスタンス参照でアクセスで...
-
正規表現を使った小数入力チェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
C#にて別クラスの関数を使いたい
-
C++でfriendクラスにしているの...
-
c++,ある関数のクラスから別の...
-
C#でほかのファイルにある自作...
-
構造 他のクラスの構造体を別...
-
C# インターフェイスの実装
-
継承したクラス側のクラス名の取得
-
内部クラスのインスタンスを外...
-
Java リフレクションについて
-
visual studioのデザイナ画面で...
-
実行可能jarファイルのファイル...
-
a href="..." とServlet
-
ひとつのファイルにクラスは1つ?
-
範囲外の数値を代入したらエラ...
-
無名パッケージからのインポート
-
Java
-
親クラスから子クラスへアクセス。
-
Tomcatのpropertiesファイルの...
おすすめ情報