今天写了个DLL,在DLL里定义了个结构体,但在调用此DLL时,提示“error LNK2001: unresolved external symbol "public:”也就是先关的函数没有实现体的问题,因为我是这么定义的:
dll.h
struct BRWAgent
{
int UseAnget ;
//HTTP
char HttpIP[15] ;
int HttpPort ;
BOOL bHttpIsUse ;
BRWAgent();
~BRWAgent() ;
BRWAgent & operator=( BRWAgent & agent ) ;
};
在.cpp中定义的函数实现。
后来发到论坛问网友,论坛的兄弟给我指出了一下问题:
1.函数实现要放到结构体名字域内定义
2.结构体不支持自定义构造函数。
3.让我看看类和结构体的区别。
唉,当时那个羞愧啊!!于是到网上找了一下,重新理解了下,结构体和类的区别,总结如下:
结构体和类区别:
结构体和类有很多地方很相似,是类的一种轻量级的替代品。因此弄清楚他们的区别和相同点,能比较好的把握他们的使用。
比较:
比较内容 |
结构 |
类 |
构造函数 |
支持(不能自定义,默认提供,作用是将所有的数据成员置零) |
支持(能自定义) |
析构函数 |
不支持 |
支持 |
变量初始化 |
不支持(private int num = 50 是错误的) |
支持 |
继承 |
不支持(sealed类型) |
支持 |
接口 |
可以实现多个接口 |
可以实现多个接口 |
特性 |
支持 |
支持 |
属性 |
支持 |
支持 |
方法 |
支持 |
支持 |
类型 |
值类型 |
引用类型 |
Summary:
1:结构体隐式地从Obeject派生出来
2:从类型的区别可以看出:
结构体数组效率比类数组效率高(不需要装箱合拆箱)。结构体集合(如Hashtable)效率比类集合效率低。集合的元素是引用类型,所以结构体必须进行装箱和拆箱处理。所以类在大的集合中更有效率。
阅读(939) | 评论(0) | 转发(0) |