C ++是完全面向对象的语言吗?

时间:2009-10-28 07:08:55

标签: c++ oop

我读到关于完全面向对象的小谈话.C ++是否也完全面向对象?如果没有..那为什么呢?

10 个答案:

答案 0 :(得分:31)

不,不是。您可以编写一个有效的,编码良好的,出色的C ++程序,而不必使用对象。

C ++支持面向对象的编程,但OO并不是语言所固有的。实际上,main函数不是对象的成员。

在smalltalk或Java中,如果没有至少一个课程,你就无法绑鞋(或写“Hello,world”)。

(当然,人们可以争论Java也是一种完全面向对象的语言,因为它的原语(比方说,int)不是对象。)

答案 1 :(得分:4)

C ++包含一个'C'方言作为子集,允许纯粹的程序式代码。

答案 2 :(得分:3)

人们反对将C ++声明为“纯粹”OO的重要论点是,它仍然至少需要一个非OO位main(),而且并非一切都是对象( intlong等)。

它还在不使用消息传递范例(公共成员)的情况下公开操作对象的状态。这打破了对象的封装。

另一方面,Java只有main()只是一个类的静态方法,所以它更接近但它仍然有非对象的东西。

Smalltalk是通常被认为是纯粹的纯正的通用语,但我不太了解它的评论。

我,当我继续开发代码并交付给我的客户时,我倾向于为知识分子留下这样的论据: - )

答案 3 :(得分:1)

定义OOL。如果你的意思是使用类等,那么C ++支持OO风格的编程等。没有什么能阻止你不使用课程。 Java OTOH,不允许使用类。 (是的,我知道Java支持FP。)

答案 4 :(得分:1)

简短的回答是否定的 - C ++并不完全是OO语言。 即使不使用C子集,您也可以使用C ++编写“不完全”的OOP。一个这样的例子是你的主要方法 - 它不包含在任何类中。

主要原因是C ++起源于C - 当Stroustrup创建了他的目标是创建新版本的C语言(带有类)时。事实上,他试图将他的作品作为C(C84)的新口味提交。

答案 5 :(得分:0)

C ++不是一种纯粹的面向对象语言,如前所述,没有什么能迫使你在C ++中使用OOP概念。 C ++就是你所说的混合面向对象语言,因为它基于C,纯粹是一种过程语言。

纯面向对象语言的例子是C#和JAVA。

答案 6 :(得分:0)

不,它不是纯粹的面向对象的语言。特别是C ++中的原始数据类型具有的规则经常与非原始数据类型不同。此外,可以使用根本不与任何数据类型相关联的函数。 C ++不是一种纯粹的面向对象语言的无数其他方式,但这是两个最重要的原因。

Java和C#都不是纯粹的面向对象语言,因为它们的原始数据类型不遵循与“object”数据类型相同的语义。

答案 7 :(得分:0)

当然不是!! 它支持内在数据类型。

答案 8 :(得分:0)

C ++只不过是“C with classes”。我仍然可以编写一个C程序并将其保存为.cpp文件。 因此,暗示证明“C ++不是一种纯粹的面向对象的语言。”

答案 9 :(得分:-1)

之所以C ++不是OOP语言,主要是因为它缺少封装的概念。您无法定义与对象的接口/合同,因为有指针可以完全控制所有对象。