C++中的Object, Class & Instance
来源:互联网 发布:论文修改软件 编辑:程序博客网 时间:2024/04/27 15:46
C++中,经常用到对象(Object)、类(Class)和实例(Instance)等概念,一直对这几个概念有些混淆,今天算是整理一下自己的思路,谈谈自己对这几个概念的看法吧;希望不当之处大家能够指出,也欢迎大家看看自己的看法。
从其定义来看,对象是指一个能完成特定操作,具有特定属性的实体(Component);类是具有相同属性对象的集合(Group of Objects)。实例则往往被理解为一个对象的具体化。
对象更多的是一个概念,在象SmallTalk这类纯粹的OO语言中,所有东西都是对象(MetaClass, Class, Instances);而类在不过是一个特殊的、能作为模板创建实例的对象。(一直想弄个SmallTalk来玩玩,但终究没有时间和精力去学习。)
在C++中,“对象”概念往往被模糊化,它不是一个能包括一切的概念,而在某些环境下成为能和类与实例相互替换的概念。
原因之一,或许是在C++对类的定义。C++把类定义为一个抽象数据类型(ADT)。而ADT只是一个实现上的概念,它在运行时并不存在一个对象所应该具有的特征(属性和行为)。虽然C++中引入了运行时类型信息(RTTI,参看type_info类),但仍然很难把类当成一个对象。从这个角度来说,在实现时类可以看作是对象概念的代名词。
原因之二,个人觉得应该是和使用这些概念的上下文有关。在使用C++时(包括设计模式),往往需要考虑两个层次的抽象:
1. 编码(实现)时的抽象
2. 运行时的抽象
在实现时,C++中,无疑类的概念和对象的概念是一致的,而实例则可以理解为一个类的实例化或一个对象的具体化;对应与Design Pattern,那些结构化的模式(Structural Patterns)更适合与这一层次的抽象。
在运行时,个人觉得对象更多的是和实例等同的。我们说某个对象和另外一个对象交互更多的是在表达某个类的一个实例和另一个类的一个实例进行交互,这个时候,对象不再是一个概念,而是被具体化了。而设计模式中的行为模式(Behavioral Patterns)则更适合与这个层次的抽象。
以上是我对这几个基本概念的理解,请大家批评指教!
从其定义来看,对象是指一个能完成特定操作,具有特定属性的实体(Component);类是具有相同属性对象的集合(Group of Objects)。实例则往往被理解为一个对象的具体化。
对象更多的是一个概念,在象SmallTalk这类纯粹的OO语言中,所有东西都是对象(MetaClass, Class, Instances);而类在不过是一个特殊的、能作为模板创建实例的对象。(一直想弄个SmallTalk来玩玩,但终究没有时间和精力去学习。)
在C++中,“对象”概念往往被模糊化,它不是一个能包括一切的概念,而在某些环境下成为能和类与实例相互替换的概念。
原因之一,或许是在C++对类的定义。C++把类定义为一个抽象数据类型(ADT)。而ADT只是一个实现上的概念,它在运行时并不存在一个对象所应该具有的特征(属性和行为)。虽然C++中引入了运行时类型信息(RTTI,参看type_info类),但仍然很难把类当成一个对象。从这个角度来说,在实现时类可以看作是对象概念的代名词。
原因之二,个人觉得应该是和使用这些概念的上下文有关。在使用C++时(包括设计模式),往往需要考虑两个层次的抽象:
1. 编码(实现)时的抽象
2. 运行时的抽象
在实现时,C++中,无疑类的概念和对象的概念是一致的,而实例则可以理解为一个类的实例化或一个对象的具体化;对应与Design Pattern,那些结构化的模式(Structural Patterns)更适合与这一层次的抽象。
在运行时,个人觉得对象更多的是和实例等同的。我们说某个对象和另外一个对象交互更多的是在表达某个类的一个实例和另一个类的一个实例进行交互,这个时候,对象不再是一个概念,而是被具体化了。而设计模式中的行为模式(Behavioral Patterns)则更适合与这个层次的抽象。
以上是我对这几个基本概念的理解,请大家批评指教!
- C++中的Object, Class & Instance
- instance、Class、Object
- JAVA Class vs Object vs Instance
- 【Object-C】类Class
- Object-c @class
- object-c之instance variables和property
- object is not an instance of declaring class
- object is not an instance of declaring class 反射异常
- object is not an instance of declaring class 反射异常
- 报错:object is not an instance of declaring class
- hibernate 4 object is not an instance of declaring class
- spring的 object is not an instance of declaring class
- object is not an instance of declaring class
- 那xxx.class.getName()為什麼能這樣寫?? 看了半天都快搞不清楚到底在程式中的example到底是class ? object ? 還是instance了
- Ruby中的 class method, instance method, singleton method/class
- scala中的object和class
- OCaml中的 class 和 object
- Object 与 Class 中的方法
- C#表达式,类型和变量
- java File操作实例
- C#循环控制语句
- C#选择控制语句
- C#简单的欢迎程序
- C++中的Object, Class & Instance
- c# 中如何定义和接收消息
- HashTable的使用示例
- C#数组
- 正则表达式基本用法A
- C#数组篇讲解
- C#语法入门
- C#中基本知识
- C#实现网段扫描