• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++、Objective-C混合编程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在XCODE中想使用C++代码,你须要把文件的扩展名从.m改成.mm。这样才会启动g++编译器。

我们来看个測试代码:

[java] view plaincopy
  1. class TestC {  
  2. private:  
  3.     NSString *str_;//C++类能够使用OC对象作为成员变量  
  4.       
  5. public:  
  6.     TestC() {  
  7.         str_ = @"hi mc0066.";//构造函数内能够使用OC对象来赋值  
  8.     }  
  9.     TestC(NSString *str) {//函数能够接收OC对象(通过函数參数)  
  10.         str_ = str;  
  11.     }  
  12.     TestC(NSInteger num) {  
  13.         str_ = [NSString stringWithFormat:@"%d",num];//C++函数能够调用OC方法  
  14.     }  
  15.     void show() {  
  16.         printf("%s\n",[str_ UTF8String]);  
  17.         NSLog(@"str_ is:%@\n",str_);  
  18.     }  
  19. };  
这是我写的C++类,类内部使用了OC的代码。依据測试能够确定下面几点:

1. C++函数内能够调用OC方法、能够创建OC对象、函数參数能够为OC对象。

2. C++类的成员变量能够是OC对象。

事实上,在混编时,OC和C++的对象都是单纯的指针。所以能够随意的彼此调用对方的方法、使用对方的内部数据。


再来看看OC中是怎样使用C++代码的:

[java] view plaincopy
  1. @interface TestOC : NSObject  
  2. {  
  3.     TestC *c;//能够使用C++对象作为參数  
  4. }  
  5.   
  6. - (id)initTestOC;  
  7. - (void)testC;  
  8.   
  9. @end  
  10.   
  11. @implementation TestOC  
  12.   
  13. - (id)initTestOC{  
  14.     if ((self = [super init])) {  
  15.         c = new TestC();//以C++语法调用构造函数  
  16.     }  
  17.     return self;  
  18. }  
  19.   
  20. - (void)testC{  
  21.     c->show();//调用C++类的内部函数  
  22. }  
  23.   
  24. - (void)dealloc{  
  25.     delete c;//用完 记得删除C++对象,避免内存泄露  
  26.     [super dealloc];  
  27. }  
  28.   
  29. @end  
和之前分析c++类没啥差别,毅然是能够使用c++的语法 能够使用c++的方法和成员。

另一点要注意,OC类无法继承C++类,C++也一样。

由于oc类的结构和c++类结构不同,所以才导致该问题。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在objective-C中#pragma mark是什么意思?发布时间:2022-07-12
下一篇:
Objective-C中的内存管理发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap