static_cast用法详解
静态类型转换(斯文的劝导,温柔的转换)。如int转换成char
主要用法: 1、用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。上行指针或引用(派生类到基类)转换安全,下行不安全
2、用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
3、把空指针转换成目标类型的空指针。
4、把任何类型的表达式转换成void类型。
demo 代码(一)
#include <iostream>
using namespace std
;
class Animal
{
public
:
virtual
void cry() = 0;
};
class Cat
:public Animal
{
public
:
void cry()
{
cout
<< "喵喵" << endl
;
}
};
class Dog
:public Animal
{
public
:
void cry()
{
cout
<< "旺旺" << endl
;
}
};
int main(void)
{
Dog
* dog1
= new
Dog();
Animal
* a1
= static_cast
<Animal
*> (dog1
);
Dog
* dog1_1
= static_cast
<Dog
*>(a1
);
Cat
* cat1
= static_cast
<Cat
*>(a1
);
a1
->cry();
Dog dog2
;
Animal
& a2
= static_cast
<Animal
&> (dog2
);
Dog
& dog2_2
= static_cast
<Dog
&>(a2
);
int kkk
= 234;
char cc
= static_cast
<char>(kkk
);
int* p1
= NULL;
int* p2
= static_cast
<int*>(NULL);
int* dp
= NULL;
int* pi
= new
int[10];
void* vp
= static_cast
<void*>(pi
);
vp
= pi
;
system("pause");
return 0;
}
结语:
时间: 2020-07-02