再看C、C++、数据结构(三)
上篇讲到了6点,下面接着描述C与C++的不同:
7、结构体
对于C和C++都有结构体,但是C++比C的结构体有一个非常好的特性,就是可以定义成员函数,还有一点是使用定义i变量是可以省略关键字struct,如
这里我想谈一下枚举并不是说C和C++有很大的不同,而是说明枚举值得范围问题,如下面一个枚举
7、结构体
对于C和C++都有结构体,但是C++比C的结构体有一个非常好的特性,就是可以定义成员函数,还有一点是使用定义i变量是可以省略关键字struct,如
1
//定义一个point结构体
2
struct Point
3
{
4
double x;
5
double y;
6
}
7
int main()
8
{
9
//使用
10
struct Point pt; // 在C中可以需要用
11
Point pt2; //在C++中可以直接这样定义
12
return 0;
13
}
8、枚举![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这里我想谈一下枚举并不是说C和C++有很大的不同,而是说明枚举值得范围问题,如下面一个枚举
1
enum GeometryType
2
{
3
Point,
4
MidPoint,
5
MulPolyline=100
6
};
这里GeometryType的最大值是127,怎么算呢,找出枚举值中最大值,然后取这个最大值中小于2的幂方-1,这里100最近的2的幂方就是128,然后再减1就是127。
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)