プロが教えるわが家の防犯対策術!

プログラムで、classはオブジェクトと呼ばれることが多いみたいですが、
構造体はオブジェクトと呼んでも良いのでしょうか

A 回答 (4件)

class と構造体はオブジェクトかという話ですが、



C++/C# ではオブジェクトとはしないのが普通です。
class や 構造体から「生成」された「インスタンス」を
オブジェクトとするのが普通。

型の「定義」とそれから生成された「実体」は別物だからです。

ただ、単に構造体といった場合、型か実体かははっきりしないので
構造体をオブジェクトと呼ぶことはあるかもしれません。
流石に C++/C# ではclass をオブジェクトとは呼びませんね。

但し、classの方は、C++ を離れると、言語によっては classが
メモリ上にちゃんと実体を持つ、クラスオブジェクト 
と呼ばれるオブジェクトになる言語が結構たくさんあります。
SmallTalk とか Delphi とか・・・

ところ変われば品変わるというということですね。
    • good
    • 1

> プログラムで、classはオブジェクトと呼ばれることが多いみたい



初耳です(笑)。そうなんですか(笑)?

基本的にはclassとオブジェクトは(語義的には)別物だと思います。
一般には・・・うーん、語弊があるかもしれんですが、データ、例えば数値、文字列データ等を「オブジェクト」と呼ぶケースが多いですね。
ざっくり言うと、データ=オブジェクトです。
ただ、プログラミング言語を設計する時点で、データ群が何かしらの階層構造、あるいはヒエラルキーを持ってて、全てのデータがそれに所属してる場合に、それらのデータを「オブジェクト」と呼ぶ場合が多いようです。
つまり、基底の抽象データが一つあって、全てのデータが「そこから順繰りに派生してる」ような階層構造を成すように設計されてた時、それに所属するデータを「オブジェクト」と呼んだりする。
形式的にはオブジェクト指向で

「クラスを作ってデータを(継承を利用して)設計してる」

のと凄く良く似てますが、必ずしもプログラミング言語設計時にオブジェクト指向の言語を使う必要はないので、これはあくまで、「データ形式が全て抽象基底データから派生してるように設計した場合」でのオブジェクトで、必ずしもクラスと密接に関係している必要もありません。
恐らく、一般にオブジェクト、と言った場合、こういう「データそのもの」を呼ぶ場合の方が多いんじゃないでしょうか。

> 構造体はオブジェクトと呼んでも良いのでしょうか

呼ぶ必要はないと思います。
    • good
    • 1
この回答へのお礼

勘違いしてたことが分かって良かったです。ありがとうございます。

お礼日時:2017/02/13 01:18

いちおう、ここは「C言語・C++・C#」のカテゴリーになっています。


そのそれぞれで「クラス」と「構造体」の意味や機能が違うので、一概には言えません。
# ちなみに
# C言語: 構造体だけで、クラスは存在しない
# C++: 機能はまったく同じもの。デフォルトのメンバーがPrivateになるのがクラス、Publicになるのが構造体
# C#: クラスは参照型、構造体は値型

ただ。
クラスは「オブジェクトの設計図」のようなものです。
クラス=オブジェクトではありません。
「クラス○○のオブジェクト」という言い方はしますが、これは「クラス○○の性質を持ったオブジェクト」という意味です。

同様に、構造体もオブジェクトではありません。
ですが「構造体××の 性質を持ったオブジェクト→構造体××のオブジェクト」という場合はあります。
    • good
    • 1

構造体にはメソッドがありませんね。



クラス 【 class 】
http://e-words.jp/w/%E3%82%AF%E3%83%A9%E3%82%B9. …
    • good
    • 1

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