c++dynamic_cast与static_cast使用方法示例
2023-06-13 09:15:12 时间
首先dynamic_cast:
#include<iostream>
usingnamespacestd;
classA{
public:
virtual~A(){}//使用dynamic_cast时,必要!
};
classB:publicA{
public:
B(){
m_b=12;
}
voidfoo(){
cout<<"B:"<<m_b<<endl;
}
private:
intm_b;
};
intmain()
{
A*a=newB();
B*b=dynamic_cast<B*>(a);
b->foo();
deletea;
return0;
}
上面没有virtual~A(){},编译时会报错:(sourcetypeisnotpolymorphic)。
static_cast:
#include<iostream>
usingnamespacestd;
classA{
public:
A():m_a(32){}
voidfoo(){
cout<<"A:"<<m_a<<endl;
}
voidsetA(inta){
m_a=a;
}
private:
intm_a;
};
classB:publicA{
public:
B(){
m_b=12;
setA(13);
}
voidfoo(){
cout<<"B:"<<m_b<<endl;
}
private:
intm_b;
};
intmain()
{
A*a=newB();
B*b=static_cast<B*>(a);
A*aa=static_cast<A*>(b);
b->foo();
aa->foo();
deletea;
return0;
}
打印a、b、aa地址,可知地址一样。
相关文章
- c++语言截取字符串,详解C++ string常用截取字符串方法
- c++贪吃蛇代码[通俗易懂]
- C++ 中vector的使用方法
- C++ mysql connector使用方法「建议收藏」
- C++构造函数的作用_c++什么是构造函数
- Cu002FC++ 中的一元运算符
- C/C++ Qt 基本文件读写方法
- c++的链表-C++链表
- c++的链表-链表入门(C++)
- C/C++ Qt Tree与Tab组件实现分页菜单
- 一个优秀windows C++ 程序员该有哪些知识详解编程语言
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法详解编程语言
- C++游戏开发需要阅读的书籍详解编程语言
- C++纯虚函数和抽象类详解
- C++数组及其使用方法完全攻略
- c++int转string方法
- C++中dynamic_cast<>的使用方法小结
- C++生成dll和调用dll的方法实例
- C++实现两个日期间差多少天的解决方法
- 解析c++中参数对象与局部对象的析构顺序的详解
- 解决C++中重定义的方法总结
- 深入理解C++中常见的关键字含义
- C++中用两个标准容器stack,实现一个队列的方法详解
- C/C++中退出线程的四种解决方法
- C++如何用cout输出hex,oct,dec的解决方法
- C++字符串的反转五种方法实例
- C++explicit关键字的应用方法详细讲解
- C++调试追踪class成员变量的方法
- C++设计类不能被继承的方法实例讲解
- c++生成dll使用python调用dll的方法
- c++String去除头尾空格的方法
- C++实现二叉树遍历序列的求解方法
- C++求逆序对的方法