
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
a href="..." とServlet
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
違うクラスからの変数の共有化
-
C#にて別クラスの関数を使いたい
-
C++のテンプレート関数やテンプ...
-
C++でfriendクラスにしているの...
-
実行可能jarファイルのファイル...
-
VisualC++でクラスのヘッダーフ...
-
java-別クラスの変数の使い方を...
-
C# 可変長変数のやりとりについて
-
Tomcatのpropertiesファイルの...
-
Java
-
構造 他のクラスの構造体を別...
-
C#のクラスライブラリでメッセ...
-
継承したクラス側のクラス名の取得
-
private static という変数の修飾
-
「タイプ初期化子が例外をスロ...
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
javaでメインクラスが見つから...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
a href="..." とServlet
-
無名パッケージからのインポート
-
visual studioのデザイナ画面で...
-
import と extends について
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
C# インターフェイスの実装
-
親クラスから子クラスへアクセス。
-
c++,ある関数のクラスから別の...
-
Java
-
構造 他のクラスの構造体を別...
-
C++で親クラスの関数を呼び出す...
-
C++でfriendクラスにしているの...
-
java-別クラスの変数の使い方を...
-
下記のコードを実行すると、Mai...
おすすめ情報