#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//static_cast
int main(void)
{
double PI = 3.14159265;
//int num = PI;
int num2 = (int)PI; //C语言的转换方式
int num3 = static_cast<int>(PI); //static_cast 增加可读性,代表普通类型的强制转换,
//static_cast 实际上是又编译器在编译的时候就已经将PI解释成num类型了
cout << "num2" << num2 << endl;
cout << "num3" << num3 << endl;
return 0;
}
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
//dynamic_cast
using namespace std;
class annimal{
public :
virtual void cry(){}
};
class dog : public annimal{
public :
void cry(){
cout<<"汪汪"<<endl;
}
void watch(){
cout<<"看家"<<endl;
}
};
class cat: public annimal{
public :
void cry(){
cout<<"喵喵"<<endl;
}
void play()
{
cout<<"捉老鼠"<<endl;
}
};
void objplay(annimal *ann){
ann->cry();
//上方是多态的基本实现,下面是类型的强制转换,让传入的时候编译器进行识别,然后进行功能增强。
dog *pdog=dynamic_cast<dog*>(ann);
if(pdog!=NULL){
pdog->watch();
}
cat *pcat=dynamic_cast<cat*>(ann);
if(pcat!=NULL){
pcat->play();
}
}
int main(){
dog d;
cat c;
objplay(&d);
objplay(&c);//基本多态的实现,但是想让传入的狗看家的特有功能。
}
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//const_cast
void charp(const char *p) {//const修饰不能改了
// p[0]="zzz";//
char *p1=NULL;
p1=const_cast<char *>(p);//需进行下面操作
p1[0]='z';//修改第一位
cout<<p1<<endl;
}
int main(){
char cha[]="cccc0.";//cha为首地址
charp(cha);
}