声明"即使没有实例化,一个类就是一个对象"是什么意思?

drb*_*drb 5 c++ ruby class

我是一名学习Ruby的C++程序员.在一本初学者书中,我读到:

"一个类本身就是一个对象,即使你没有直接实例化它."

我不知道如何解释.

smp*_*kes 6

在C++中,除了typeidet 之外,没有类的语言可见的运行时表示.你可以说class Foo {};,但是你不能说&Foo.(您可以获取对象的typeid/地址typeinfo,这是类对象的混合版本).

在Ruby中,类是对象.你可以用一个对象做任何事情,你可以用一个类做,因为它是一个对象.例如,在Ruby中,您可以foo.send(...)使用任何对象foo.由于一个类是一个对象,你可以这样做Foo.send(...).

关于"你没有实现它"的部分是指通常你foo = Foo.new在Ruby中说的但你不需要对类进行说明.类对象由运行时创建.(事实上​​,class Foo; end在Ruby中非常相似Foo = Class.new.)