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天之内学习完这本书,加油!