首页 > 代码库 > c++第十四章-(类型强转换)

c++第十四章-(类型强转换)

类型强转换有2种。

class Company{public:    Company(std::string theName,std::string theProduct);    virtual void printInfo();    protected:    std::string name;    std::string product;};Company::Company(std::string theName,std::string theProduct){    this->name = theName;    this->product = theProduct;}void Company::printInfo(){    std::cout << "这个公司的名字叫:" << name <<"正在生产" << product << std::endl;}class TechCompany : public Company{public:    TechCompany(std::string theName,std::string theProduct);    virtual void printInfo();};TechCompany::TechCompany(std::string theName,std::string theProduct) : Company(theName,theProduct){    }void TechCompany::printInfo(){    std::cout << name << "公司大量生产了" << product << "这款产品!\n";}int main(int argc, const char * argv[]){    /*    Company *company = new TechCompany("APPLE","IPHONE");    //类型强转    TechCompany *tecCompany = (TechCompany *)company;     */        Company *company = new Company("APPLE","IPHONE");    //更安全的类型强转,转换失败返回NULL    TechCompany *tecCompany = dynamic_cast<TechCompany *>(company);        if (tecCompany != NULL)    {        tecCompany->printInfo();    }    else    {        std::cout << "转换失败\n";    }        delete company;    company = NULL;    tecCompany = NULL;        return 0;}

控制台输出结果为:

APPLE公司大量生产了IPHONE这款产品!