class A
函数覆盖 问题
转载{
public:
virtual void f()
{
cout << "A" << endl;
}
};
class B:public A
{
public:
virtual void f()
{
cout << "B" << endl;
}
};
int main()
{
A *pa = new A();
pa->f();
B *pb = (B*)pa;
pb->f();
delete pa, pb;
pa = new B();
pa->f();
pb = (B*)pa;
pb->f();
}
输出结果为AABB
在B *pb = (B*)pa; 转化pa为B类型并新建一个指针pb,将pa复制到pb。但pa的指针始终没有发生变化,所以pb也指向pa的f函数。
pb = (B*)pa;转化pa为B类指针给pb赋值,但pa所指向的f函数是B类的f函数,所以pb所指向的f函数是B类的f函数。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
经典问题——重复覆盖问题
糖果店的
python #include ci 预处理 -
Memcpy 拷贝函数的实现(考虑内存覆盖问题)
memcpy函数是把src指向的对象中的size个字符拷贝到dst所指向的对象中
memcpy函数 内存覆盖 内存空间 目的地址 源地址 -
算法:棋盘覆盖问题
如何应用分治法求解棋盘覆盖问题呢?分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含为了将这...
棋盘覆盖问题 全局变量 棋盘覆盖 二维数组 -
Java棋盘覆盖问题
...
i++ 棋盘覆盖 测试用例 java 分治