程序小白天天打卡(高级强制类型转换)
程序员文章站
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");
}
上一篇: LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
下一篇: 黑马程序员_java08_多线程
推荐阅读