关注
先说一下static_cast
用static_cast 转换的时候是不安全的,
该代码能将不是继承关系的指针转为b , 不会出现编译错误的前提是 声明的时候, 其余几个指针类型都是void*。
虽然可以转换, 但是也只是能调用函数,
不能正常输出成员变量的值, 因为static_cast不安全,
它会 将错误保留下去, 大家可以试试。
#include <iostream>
using namespace std;class x
{
public:
int i;
x(){i=1;}
virtual void f(){cout<<"x"<<endl;}
};
class a:public x
{
public:
int j;
a(){j=2;}
void f(){cout<<"a"<<endl;}
};
int main()
{
x *p1 = new x;
a *p2 = static_cast<a*>(p1);
p2->f();//x
cout<<p2->i<<endl;//1
cout<<p2->j<<endl;//0
return 0;
} //static_cast将一个指向x类型的指针转为指向a类型的指针, //虽然正确,但是不安全, 因为此时p2并不能访问j,它访问的是 //垃圾值. 如果使用dynamic_cast 他就会检查出这种不安全
//情况, 从而返回NULL.
另外,楼主的函数之所以会这样输出daxbe
我觉得是因为 每一个类都继承x, x中的函数是virtual类型的, 那派生类重写的函数也是virtual类型的, 既然是虚函数, 调用的时候就会去虚函数表中找函数地址,找虚函数表的时候不看指针类型,只看实际指向的内容(这就是能多态的一部分原因),因为他们实际指向各自的函数,所以最后会输出各自的结果。
至于楼上说的静态绑定,我觉得不对,静态绑定是指普通函数的调用使用的是静态绑定,一旦函数是虚函数,就不能是静态绑定的,一定是通过查表才决定绑定哪个函数。
我也是小白,如果大家有觉得我说的不对的地方,帮我指正啦。
查看原帖
点赞 1
相关推荐
09-11 16:10
蚌埠坦克学院 机械设计/制造 点赞 评论 收藏
分享
点赞 评论 收藏
分享
Catalina_CQU:每个事业部要求不一样,不必担心
点赞 评论 收藏
分享
牛客热帖
- 1... 面试反问环节怎么问!看这一篇就够了!1.6W
- 2... 秋招公司犯下的“七宗罪”7808
- 3... 🧧央国企笔面经全网征集令!7410
- 4... 好像人活着就没有一刻能闲下来7012
- 5... 放弃敲代码做产品经理5849
- 6... 兄弟,我在快手逆袭了!(读博签证被拒后......4835
- 7... 也不知道是因为我只是硕士学历,还是因为我不是男生,亦或者是因为我本科学校只是个211不管我研究生多么拼命,发了多少论文和专利,拿了多少奖学金,干了多少重点项目在茫茫简历中,依然不是被认可的那一个即使有幸进面,也只是众多备选中的一条迟迟得不到回应的小鱼从来没有这么累过突然开始觉得,不是所有努力都能有好的结果但是除了比昨天更加拼命喝努力,我找不到别的方法4680
- 8... 蚂蚁,是我太菜了4649
- 9... 0Offer4532
- 10... 25届58同城校招后端-热乎面经(二面,如有后续持续更新4525
正在热议
# 你的秋招简历被谁挂了? #
65564次浏览 968人参与
# 你觉得今年秋招难吗 #
804399次浏览 10942人参与
# 同程秋招 #
11857次浏览 185人参与
# 国央企求职进展汇总 #
11981次浏览 60人参与
# 宁德时代求职进展汇总 #
64634次浏览 523人参与
# 比亚迪求职进展汇总 #
350527次浏览 1976人参与
# 北京农商银行校招 #
15110次浏览 222人参与
# 选完offer后,你后悔学机械吗? #
6678次浏览 42人参与
# 通信硬件投递记录 #
277597次浏览 6368人参与
# 大厂还是考编 #
62444次浏览 1217人参与
# 机械制造投递记录 #
1106362次浏览 21686人参与
# 想实习转正,又想准备秋招,我该怎么办 #
387484次浏览 4112人参与
# 非技术投递记录 #
262350次浏览 4008人参与
# 产品薪资爆料 #
67857次浏览 717人参与
# 如何一边实习一边秋招 #
829861次浏览 11112人参与
# 谈薪时HR压价该怎么应对 #
79805次浏览 937人参与
# 毕业季,你想好怎么跟生活对线了吗? #
108681次浏览 2526人参与
# 双非本科求职如何逆袭 #
404070次浏览 5155人参与
# OPPO求职进展汇总 #
458188次浏览 4088人参与
# 找实习多的是你不知道的事 #
1184724次浏览 17003人参与
# 0offer是寒冬太冷还是我太菜 #
675479次浏览 6482人参与
# 如果实习可以转正,你会不会放弃秋招 #
122465次浏览 1758人参与