class Base{
public:
void counter();
....
}
class Dervied: public Base{
public:
....
}
void main()
{
Base *ptr=new Derived;
ptr->counter();
}
为了识别基类指针指向派生类并使用派生成员函数,我们使用“虚拟” .
同样,我们可以使派生数据成员“虚拟”吗? (数据成员是公开的)
7 回答
virtual
是 Function specifier ...从标准文档,
所以没有什么叫虚拟数据成员 .
希望能帮助到你...
不,但您可以创建一个虚函数来返回指向虚拟数据成员的指针
不,在C中没有虚拟数据成员 .
我想不是,但你可能会使用虚拟getter和setter来模拟它吗?
这是不正确的 . 我们创建虚函数以允许派生类提供与基础提供的不同的实现 . 它不用于标识基类指针指向派生类 .
只有非静态成员函数才能是虚拟的 . 数据成员不能 .
Here's a link with some more info on that
不,因为这将以无数种意想不到的方式打破封装 . 无论您想要实现什么,都可以使用受保护的属性和/或虚拟功能来完成 .
此外,虚函数是一种调度方法(即,选择将要调用哪个函数),而不是选择对应于该成员属性的存储位置 .
也许你可以以同样的方式看到问题: