C++中类型转换

#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);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值