#include<iostream>
using namespace std;
class A
{
protected:
int i;
public:
A(int x):i(x){}
virtual int operator!() = 0;
};
class B:public A
{
A *p;
public:
B(int x, A*y = NULL):A(x){p = y;}
int operator!()
{
if(p)
return !*p;
else
return 1;
}
};
int main()
{
A *p1 = new B(1);//p1是否是一个指向属性值=1的指针
A *p2 = new B(2, (A*)p1);//p2是否是一个指向数据i属性值=2,A*p = p1的指针
cout<<!*p2<<endl;//*p1非空return !*p;应该是输出2才对啊,实在是新手不明白
return 0;
}
c++抽象类
最新推荐文章于 2025-10-23 18:09:57 发布
本文通过一个C++程序示例展示了基类与派生类之间的虚函数使用及对象指针操作。该示例中定义了一个抽象基类A,并在派生类B中实现了虚函数operator!(),通过不同类型的指针调用此函数来演示动态绑定的效果。
286

被折叠的 条评论
为什么被折叠?



