C++ 什么是;Objective-C是C的超集,比C+更严格+&引用;确切的意思是?
我在那里读到:C++ 什么是;Objective-C是C的超集,比C+更严格+&引用;确切的意思是?,c++,objective-c,c,C++,Objective C,C,我在那里读到: ObjuleC是C的超集(事实上比C++更严格),因此不会出现向后兼容性问题。在C中可以做的任何事情都可以在Objective-C中完成 超集是二元的,就像怀孕一样。Obj-C是C的超集,C++不是.< 他们所说的超集是什么意思?objective-C以什么方式与C更接近//向后兼容?Objto-C遵循C++哲学的方式比C++ ++? 任何C程序都可以不经objective-C编译器修改而编译(100%兼容性) 这更多的是关于编程语言设计和兼容性的问题,而不是关于哪个更好的问题
ObjuleC是C的超集(事实上比C++更严格),因此不会出现向后兼容性问题。在C中可以做的任何事情都可以在Objective-C中完成
超集是二元的,就像怀孕一样。Obj-C是C的超集,C++不是.< 他们所说的超集是什么意思?objective-C以什么方式与C更接近//向后兼容?Objto-C遵循C++哲学的方式比C++ ++? 任何C程序都可以不经objective-C编译器修改而编译(100%兼容性) 这更多的是关于编程语言设计和兼容性的问题,而不是关于哪个更好的问题int *foo = malloc(12);
编译在C和ObjuleC中,但C++中没有。当然,还有其他例子
虽然有时C++专家不是C++专家,但C是C的超集,这是不准确的,这就是为什么你的引用对这两个词进行了大量的比较。
从根本上讲,C++被设计成一个“更好的C”,固定设计省略,无论是真实的还是感知的,正如C++的作者都通过了语言。这个设计决定的结果是:<代码> x>代码>是一个有效的C程序,它不能保证在C++编译器处理时,代码> x/COD>将编译,更不用说运行。这些变化涉及到诸如字符串文本(它们变成了
constchar*
)、void
指针的赋值、enum
s和整数类型之间的转换等基本构造
此外,一旦C99出现,使其进入更新的C标准的特征被从更新的C++标准中排除。同样,非常重要的语言特性被忽略了——最显著的是,指定的初始值设定项和可变大小数组
相反,Objective C被定位为C的超集,要求所有有效的C程序都可以用Objective C编译器编译。我准备了一个简单的图表;它不是很漂亮,但希望能让人明白这一点:
- 蓝色:仅在目标C中有效的所有程序集(相对较大)
Objective C是一组向后兼容的C扩展。这是可能的,因为Objective C功能以两种非常简单的方式进行分隔:
- 字符
的使用。此字符当前未在C语言中使用@
- 调用方法的简单语法扩展,
。在C中,方括号用于数组下标,因此这是无效的C语法。基于无效语法的扩展不会更改宿主语言中任何有效内容的含义[obj方法:参数]
<>一个C程序的简单例子,它被当作C++处理时,是任何一个C++程序,它使用C++关键字作为标识符,例如<代码>类< /代码>或<代码>虚拟< /代码>。目标C不引入任何保留关键字。它有由
@
字符引入的新关键字,如@界面
是的,那就好了。可以说,如果您愿意找出要使用的低级运行时函数,GUI也不需要Objective-C。大部分是哲学性的。+1很好的解释。我认为“C哲学”的问题有点模糊,但大多数观察家可能会同意C的“目标”和ObjC的“目标”确实不同。C的目的是非常接近硬件,同时提供一些有用的可移植性