欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

程序小白天天打卡(高级强制类型转换)

程序员文章站 2022-07-15 16:34:11
...

2018/2/19

C++

1.普通类型转换

如果在数值的赋值过程中出现左右赋值不一样的情况,采用普通强制转换的方式,使等式左右数据类型相同;

double a=(double)int b;

2.高级强制转换

如果存在动态值的转换(比如说指针),可以采用动态转换形式(相当于引用函数)

/*先在两个尖括号中写出想要的指针类型,然后将被转换的值写在括号中*/

TechCompany *techCompany = dynamic_cast<TechCompany*>(company);

#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
class Company
{
public:
	Company(string theName, string product);
	virtual void printInfo();//虚方法
protected:
	string name;
	string product;
};
class TechCompany :public Company//继承(不能继承父类构造)
{
public:
	TechCompany(string theName, string product);
	virtual void printInfo();//虚方法
};
/*构造方法的实现*/
Company::Company(string theName, string product)
{
	name = theName;
	this->product = product;
}
void Company::printInfo()
{
	cout << "这个公司的名字叫做" << name << "正在生产" << product << "\n";

}
TechCompany::TechCompany(string theName, string product) :Company(theName, product)
{
}
void TechCompany::printInfo()
{
	cout << name << "公司大量生产了" << product << "这款产品\n";

}
int main()
{
	/*普通强制转换*/
	/*Company*company = new TechCompany("APPLE", "iphone");
	TechCompany *techCompany = (TechCompany*)company;*/
	/*动态强制转换*/
	/*先在两个尖括号中写出想要的指针类型,然后将被转换的值写在括号中*/
	Company *company = new TechCompany("APPLE", "iphone");
	
	TechCompany *techCompany = dynamic_cast<TechCompany*>(company);
	techCompany->printInfo();
	delete company;//已经删除了地址
	//delete techCompany;所以删除它会使程序出错
	company = NULL;
	techCompany = NULL;
	system("pause");
}



    程序小白天天打卡(高级强制类型转换)