文章分类 - C++|C++/CLI|C|Objective-c
摘要:在使用Objective-c的工程中,会存在.m、.h、.mm这三种不同后缀名的文件,它们的区别如下: .h :头文件,它包含类名,类继承的父类,还有方法和变量的声明。它定义的类的成员变量以及方法等等是公开的,外部是可以访问的。 .m :.m文件是纯Object-C 文件(.m只能调用纯Object
阅读全文
摘要:描述:override保留字表示当前函数重写了基类的虚函数。目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可。例子:c
阅读全文
摘要:// properties.h #ifndef _PROPERTIES_H #define _PROPERTIES_H #define PROPERTY(t,n) __declspec( property ( put = property__set_##n, get = property__get_
阅读全文
摘要:“__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充。这些属性有:align、allocate、deprecated、 dllexport、dllimport、 naked、noinline、noreturn、nothrow、novtable、
阅读全文
摘要:最近整理了一些获取当前模块路径的代码,都是通过调用 GetModuleFileName() 来获取 [cpp] view plain copy DWORD WINAPI GetModuleFileName( _In_opt_ HMODULE hModule, _Out_ LPTSTR lpFilen
阅读全文
摘要:C++/CLI中可以对运算符进行重载,但与本地C++有所区别。同时对于运算符重载,数值类和引用类也存在不同要求。下面以例子开始,了解C++/CLI中重载运算符的方法。 一、数值类中重载运算符 下面的例子重载了加法运算符。 value class Length { private: int feet;
阅读全文
摘要:属性是C++/CLI的类成员,它类似于成员变量,但实际上不是。其主要区别在于,字段名引用了某个存储单元,而属性名则是调用某个函数。属性拥有访问属性的set()和get()函数。当我们使用属性名时,实际上在调用该函数的get()或set()函数。如果一个属性仅提供了get()函数,则它是只读属性;如果
阅读全文
摘要:C++/CLI中可以定义两种类型的struct和class类型,一种为数值类(或数值结构):value class(value struct);一种是引用类(或引用结构):ref class(ref value)。与本地C++一样,class与struct的区别在于前者的成员默认为私有,后者默认为公
阅读全文
摘要:类函数是C++/CLI中引入的新概念,其功能类似于函数模板,但原理上却迥然不同。使用函数模板时,编译器根据模板生成函数源代码,然后将其与其它代码一起编译。这种方法可能会产生许多函数,从而使得生成模块的体积增加,这就是所谓的“代码膨胀”。类函数与之不同,类函数本身将被编译,在调用类函数时,实际类型在运
阅读全文
摘要:C++/CLI中函数的工作方式与ISO/ANSI C++完全相同,但由于在C++/CLI中用跟踪句柄和跟踪引用替代了本地指针和引用,因此也带来一些变化,主要包括 CLR程序中函数的形参与返回值可以是数值类型、跟踪句柄、跟踪引用和内部指针。 如果某个形参是CLR数组,程序不需要另外的参数指定其大小,因
阅读全文
摘要:与本地C++自己维护堆不同,C++/CLI中动态分配的内存是由CLR来维护的。当不需要堆时,CLR自动将其删除回收,同时CLR还能自动地压缩内存堆以避免产生不必要的内存碎片。这种机制能够避免内存泄露和内存碎片,被称为垃圾回收,而由CLR管理的这种堆被称为CLR堆。它由操作符gcnew创建。 由于垃圾
阅读全文
摘要:C++/CLI字符串(Unicode字符组成的字符串)是指在System命名空间中定义的String类,即由System:Char类型的字符序列组成的字符串。它包含大量强大的功能,使得字符串的处理非常容易。创建一个String对象的方法如下例所示: System::String^ saying =
阅读全文
摘要:要学习数组,必须先了解跟踪句柄。 一、跟踪句柄 跟踪句柄类似于本地C++指针,但也有很大区别。跟踪句柄确实存储着某个对象的地址,但当CLR压缩堆过程中改变了该对象的地址,则垃圾回收器自动更新句柄所包含的地址。我们不能像本地指针那样用跟踪句柄来执行地址的算术运算,也不允许对跟踪句柄进行强制类型转换。
阅读全文
摘要:一、基本控制结构 ISO/ANSI C++中的控制与循环全部适用于C++/CLI。下例展示了C++/CLI控制台程序中的控制循环: 例子:基本循环控制 - - - - - - - - - - - - - - - - <<== 华丽的分割线 ::开始==>> [Ex3_15.cpp] - - - -
阅读全文
摘要:从今日开始,将前期学习《Visual C++ 2005入门经典》(Ivor Horton著 清华大学出版社出版)的相关笔记整理到随笔中,希望能和C++/CLI爱好者分享学习过程中的心得。文中主要内容和例子摘自原书相关章节,如有侵权,请留言或来信告知。 相比于ISO/ANSI C++而言,C++/CL
阅读全文
摘要:當題目涉及到求最大最小值時,最初的比較數字就應當設置爲INT_MAX或INT_MIN,更爲安全。 <limits.h>中有INT_MAX和INT_MIN的宏定義可直接使用。 或者自行定義宏 #define INT_MAX 0x7fffffff #define INT_MIN 0x80000000 I
阅读全文
摘要:http://www.roading.org/develop/cpp/%E3%80%8A%E6%B7%B1%E5%BA%A6%E6%8E%A2%E7%B4%A2c%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B%E3%80%8B%E7%AC%94%E8%AE%B0%E6%B1
阅读全文
摘要:C++中的RAII全称是“Resource acquisition is initialization”,直译为“资源获取就是初始化”。但是这翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当产生异常、回滚等现象时,RAII可以正确地释放掉资源。 举个常见的例
阅读全文
摘要:使用C/C++编程时,常使用ZeroMemory、memset或 “={0}”来对结构体对象进行初始化或清零。然而这三种方式都有各自的特点,使用时需谨慎,否则容易出现严重错误,本人今日解决一个导致宕机的bug, 查了几小时,才发现是由同事乱用ZeroMemory所致。于是搜集资料,撰此文以共勉。 m
阅读全文
摘要:模板不支持分离编译,具体原理见文章:点击打开链接 解决方法目前已知有三种: 一是把模版函数归总到一个SocketServer.template文件中,在调用时include,这种方法可编译成功,但VS好像不支持template文件的显示,代码都是黑色的 二是把SocketServer.cpp和Soc
阅读全文