gpt4 book ai didi

c++ - 访问说明符和虚函数

转载 作者:太空狗 更新时间:2023-10-29 23:37:54 26 4
gpt4 key购买 nike

在 C++ 指定的 3 种不同访问说明符(公共(public)、私有(private)、 protected )下声明虚函数时的可访问性规则是什么每一项的意义是什么?任何解释该概念的简单代码示例都将非常有用。

最佳答案

访问说明符的应用方式与在名称查找期间应用于任何其他名称的方式相同。该函数是虚拟的这一事实根本无关紧要。

有一个常见的错误,有时会发生在虚函数方面。

如果名称查找确定一个可行函数是虚函数,则在用于命名函数的对象表达式的静态类型范围内检查虚函数的访问说明符。在运行时,可以在派生类中使用完全不同的访问说明符定义要调用的实际函数。这是因为“访问说明符”是一种编译时现象。

// Brain compiled code ahead
struct A{
virtual void f() {}
private:
virtual void g() {}
protected:
virtual void h() {}
};

struct B : A{
private:
virtual void f() {} // Allowed, but not a good habit I guess!
};

B b;
A &ra = b;

ra.f(); // name lookup of 'f' is done in 'A' and found to be public. Compilation
// succeeds and the call is dynamically bound
// At run time the actual function to be called is 'B::f' which could be private, protected etc but that does not matter

关于c++ - 访问说明符和虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com