2013年11月28日
摘要: 1、解决的问题: 考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。二者使用同一个头文件,作为接口,怎么办呢?2、解决办法: 使用条件编译:定义一个变量,针对提供者和使用者,设置不同的值。 1 #ifndef DLL_H_ 2 #define DLL_H_ 3 4 #ifdef DLLProvider 5 #define DLL_EXPORT_IMPORT __declspec(dllexpo... 阅读全文
posted @ 2013-11-28 20:15 Andy Niu 阅读(32181) 评论(2) 推荐(1)
摘要: 1、方法有三个部分:方法的拥有者,方法名,方法形参表。2、对象有表面类型和真实类型,编译器编译的时候,仅仅知道对象的表面类型,而不知道对象的真实类型。3、调用方法的时候,有很多同名方法,到底调用那个方法呢?4、依据是: a、如果是virtual方法,根据方法拥有者的真实类型,决定调用哪个方法。 b、根据形参表的表面类型,决定调用哪个方法。 阅读全文
posted @ 2013-11-28 19:44 Andy Niu 阅读(340) 评论(0) 推荐(0)
摘要: 1、C++的思路:无论是基本类型,还是类类型,对象的传递提供了两种方式,一个是整体拷贝,一个是复制引用。整体拷贝对应着copy构造和copy赋值,复制引用就是通过引用或者指针实现的,当然指针本身还是整体拷贝,也可以是引用。 C++对象既可以分配在栈上,也可以分配在堆上,分配在堆上的对象必须手工delete2、C# 的思路:类类型整体拷贝,代价大,基本类型代价小。基本类型是整体拷贝,类类型是复制引用。C#中的引用是对C++引用的强化,和C++指针的弱化。 C++中引用必须是一个对象的别名,而且必须至始至终是这个对象的别名。 C++指针可以修改指向对象的内容,可以修改指针的指向,也可以对指针... 阅读全文
posted @ 2013-11-28 19:35 Andy Niu 阅读(621) 评论(0) 推荐(0)