chapter 3 学习

来源:互联网 发布:php输出菱形 编辑:程序博客网 时间:2024/05/01 22:19

 

Chapter 3

今天晚上学习了第三章,因为很多是C语言的复习,所以看得也不是太仔细,但是还是有不少新的知识点,之前不是很注意的。

<-> Union 类型的特性

#include<iostream>
using namespace std;
union Packed
{
 char i;
 short j;
 int k;
 long l;
 float f;
 double d;
};
int main()
{
 cout<<"sizeof(Packed)= "<<sizeof(Packed)<<endl;
 Packed x;
 x.k=1;
 x.d=12.1;
 cout<<x.d<<endl;
}

Union类型的大小由最大的那个成员决定,上面的由double决定,所以在我的机子上显示为8.

并且x的数值只能存在一个成员的值,新的复制会淹没原来的成员的值。

<二>enum类型

#include<iostream>
#include<string>
using namespace std;
enum shapeType{
 circle,
 square,
 rectangle,
 none
};
shapeType f(string& s)
{
 switch(s[0])
 {
 case 'c': return circle;break;
 case 's':return square;break;
 case 'r':return rectangle;break;
 default:return none;break;
 }
}

int main()
{
 string s;
 while(true)
 {
 cin>>s;
 switch(f(s))
 {
 case circle: cout<<"it's a circle"<<endl;break;
 case square: cout<<"it's a square"<<endl;break;
 case rectangle:cout<<"it's a rectangle"<<endl;break;
 default:break;
 }
 if(f(s)==none)break;
 }
}

<三>static_cast、const_cast

可以看出const_cast虽然可以使一个指针指向一个const对象,但是却无法通过该指针改变原对象的值。
 <四>assert

assert(statement)

当statement不成立的时候报错
<五> 函数指针

上面这个程序的例子,非常好,可以学习到,怎么#define 和怎么使用函数指针。

今天就到这里了,学习了3章,准备每天三章,在5天之内学习完这本书,加油!

原创粉丝点击