C++、Objective-C 混合编程
2014-04-26 01:42
183 查看
在XCODE中想使用C++代码,你需要把文件的扩展名从.m改成.mm,这样才会启动g++编译器。
我们来看个测试代码:
[java] view
plaincopy
class TestC {
private:
NSString *str_;//C++类可以使用OC对象作为成员变量
public:
TestC() {
str_ = @"hi mc0066.";//构造函数内可以使用OC对象来赋值
}
TestC(NSString *str) {//函数可以接收OC对象(通过函数参数)
str_ = str;
}
TestC(NSInteger num) {
str_ = [NSString stringWithFormat:@"%d",num];//C++函数可以调用OC方法
}
void show() {
printf("%s\n",[str_ UTF8String]);
NSLog(@"str_ is:%@\n",str_);
}
};
这是我写的C++类,类内部使用了OC的代码。根据测试可以确定以下几点:
1. C++函数内可以调用OC方法、可以创建OC对象、函数参数可以为OC对象。
2. C++类的成员变量可以是OC对象。
其实,在混编时,OC和C++的对象都是单纯的指针,所以可以任意的彼此调用对方的方法、使用对方的内部数据。
再来看看OC中是如何使用C++代码的:
[java] view
plaincopy
@interface TestOC : NSObject
{
TestC *c;//可以使用C++对象作为参数
}
- (id)initTestOC;
- (void)testC;
@end
@implementation TestOC
- (id)initTestOC{
if ((self = [super init])) {
c = new TestC();//以C++语法调用构造函数
}
return self;
}
- (void)testC{
c->show();//调用C++类的内部函数
}
- (void)dealloc{
delete c;//用完 记得删除C++对象,避免内存泄露
[super dealloc];
}
@end
和之前分析c++类没啥区别,毅然是可以使用c++的语法 可以使用c++的方法和成员。
还有一点要注意,OC类无法继承C++类,C++也一样。因为oc类的结构和c++类结构不同,所以才导致该问题。
我们来看个测试代码:
[java] view
plaincopy
class TestC {
private:
NSString *str_;//C++类可以使用OC对象作为成员变量
public:
TestC() {
str_ = @"hi mc0066.";//构造函数内可以使用OC对象来赋值
}
TestC(NSString *str) {//函数可以接收OC对象(通过函数参数)
str_ = str;
}
TestC(NSInteger num) {
str_ = [NSString stringWithFormat:@"%d",num];//C++函数可以调用OC方法
}
void show() {
printf("%s\n",[str_ UTF8String]);
NSLog(@"str_ is:%@\n",str_);
}
};
这是我写的C++类,类内部使用了OC的代码。根据测试可以确定以下几点:
1. C++函数内可以调用OC方法、可以创建OC对象、函数参数可以为OC对象。
2. C++类的成员变量可以是OC对象。
其实,在混编时,OC和C++的对象都是单纯的指针,所以可以任意的彼此调用对方的方法、使用对方的内部数据。
再来看看OC中是如何使用C++代码的:
[java] view
plaincopy
@interface TestOC : NSObject
{
TestC *c;//可以使用C++对象作为参数
}
- (id)initTestOC;
- (void)testC;
@end
@implementation TestOC
- (id)initTestOC{
if ((self = [super init])) {
c = new TestC();//以C++语法调用构造函数
}
return self;
}
- (void)testC{
c->show();//调用C++类的内部函数
}
- (void)dealloc{
delete c;//用完 记得删除C++对象,避免内存泄露
[super dealloc];
}
@end
和之前分析c++类没啥区别,毅然是可以使用c++的语法 可以使用c++的方法和成员。
还有一点要注意,OC类无法继承C++类,C++也一样。因为oc类的结构和c++类结构不同,所以才导致该问题。
相关文章推荐
- IOS/OSX MAC C++与objective-c混合编程 objective-c++
- objective-c 和c++ 混合编程
- IOS-Swift、Objective-C、C++混合编程
- C++ 与Objective-c 混合编程,让您的程序健步如飞
- IOS-Swift、Objective-C、C++混合编程
- c c++ objective-c 混合编程 头文件问题
- C++和objective-C混合编程出现的X duplicate symbols for architecture XX问题
- C/C++在Java、Android和Objective-C三大平台下实现混合编程
- C++、Objective-C 混合编程
- objective-c 和c++ 混合编程
- Objective-C:swift、objective-c、C++、C混合编程
- C++、Objective-C 混合编程
- C++、Objective-C 混合编程
- IOS-Swift、Objective-C、C++混合编程
- C/C++在Java项目、Android和Objective-C三大平台下实现混合编程
- c++ objective c 混合编程问题总结
- Objective-C 和C++的比较
- 使用JNI进行Java与C/C++语言混合编程(2)--在C/C++中调用Java代码
- Java与C++混合编程(2)
- C和C++混合编程