object c语言与C++的比较
发布网友
发布时间:2022-04-21 01:36
我来回答
共2个回答
热心网友
时间:2023-11-03 07:02
单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
动态:Objective-C是动态定型(dynamicaly
typed)所以它的类库比C++要容易操作。Objective-C
在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
C++
跟从面向对象编程里的Simula67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula
67学派更安全,因为大部分错误可以在编译时查出。而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr
67那里就无法通过。从很多方面来看,C++和Objective-C的差别,与其说时技术上的,不如说是思维方式上的。
常用的系统快捷键:复制、粘贴
、剪切option+c,Option+V,Alt+table,Option+N,Shift+Option+N
内核环境:主要由Mach和BSD组成,但它同时也包括了网络协议栈、网络服务、文件系统和设备驱动程序
//声明类
@interface
Fraction:
Object
{
int
numerator;
//实例变量
int
denominator;
}
-(void)
print;
//实例方法
instance
method
-(void)
setNumerator:
(int)
n:
(int[U1]
)m;
//带参数的成员函数
-(void)
setDenominator(int)n;
+(void)
makeNumber;
//类方法
class
method,有点static的味道
@end
//实现类
@implementation
Fraction;
-(void)
print
{
printf
("
%i/%i
",
numerator,
denominator);
}
-(void)
setNumerator:
(int)
n:
(int)m
{
numerator
=
n;
Denominator
=
m;
}
-(void)
setDenominator:
(int)
d
{
denominator
=
d;
}
+(void)
makeNumber{}
@end
//使用类:选择“Command
Line
Utility”中的“FoundationTool”项
#import<Foundation/Foundation.h>
#import
“Fraction.h”
int
main
(int
argc,
char
*argv[])
{
NSAutoreleasePool
*pool
=
[[NSAutoreleasePool
alloc]init];
//
Fraction
*myFraction
=
[[Fraction
alloc]
init];
Fraction
*myFraction;
//定义指针Fraction对象
myFraction
=
[Fraction
alloc];//分配内存
myFraction
=
[myFraction
init];
//初始化
[myFraction
setNumerator:
1:3];
[myFraction
setDenominator:
3];
printf
("The
value
of
myFraction
is:");
[myFraction
print];
printf
("\n");
[myFraction
free];
//insert
code
here...
NSLog(@"Julia
is
a
pretty
actress");
[pool
release];]
return
0
}
热心网友
时间:2023-11-03 07:02
两者都是C语言的衍生,但C++完全不支持Objectice C,Objectice C仅仅支持部分C++特性(比如mm文件直接定义及实现类、函数指针等)。
Objective C在效率上比C++差一些(因为支持类反射,这样一来会有差距,而C++在这方面做得比较好),而且有些高级语言的底层支持C++(比如JNI)不支持Objectice C,导致Objectice C完全没名气。而且Objectice C因为好多API完全闭源也导致了现在也完全不能与主流的C++、Java、C#、VB等语言相提并论。
Objectice C应用的兴起也是2008年iPhone发布以后的事了。不过在这个硬件制造性能大幅提升的时代,C++的一些缺陷渐渐被性能稍差但比一些高级语言效率要好的Objectice C有所取代(因为它的内存还是手工管理的)。