gpt4 book ai didi

C++ - "using"关键字说明

转载 作者:行者123 更新时间:2023-11-30 01:08:29 29 4
gpt4 key购买 nike

我需要快速澄清关于类的 using 关键字,因为我不确定我是否理解正确。

假设我有以下示例:

class B {
public:
int var;
int f(void);

};

class C : public B {protected: using B::var; };

这是否意味着类 C 不是从类 B 继承变量 var 作为 public,而是继承此变量作为 protected 并且剩下的唯一公共(public)变量是 int f(void);?

此外,类 C 是否可以通过在其主体中包含 private: using B::var; 来将变量继承为私有(private)变量?

因为变量 var 已经在类 B 中公开,所以编写 public: using B::var; 有什么意义吗?

谢谢!

最佳答案

Does that mean that instead of inheriting the variable var as public from class B, class C instead inherits this variable as protected and the only public variable left will be the int f(void);?

是的,C::var 现在是一个 protected 成员。

您可以通过尝试编译以下内容来测试它:

class B 
{
public:

B() : var(0) { }

int var;

protected:

private:

};


class C : public B
{
public:

C() : B() { }

protected:

using B::var;

private:

};

void main()
{
B b;
b.var = 3; // <-- OK

C c;
c.var = 3; // <-- error C2248
}

Also, could the class C inherit the variable as private by having private: using B::var; inside its body?

同样,是的,您可以将其继承为 private。尽管可以通过 B 访问成员来规避它。

class B 
{
public:

B() : var(0) { }

int var;

protected:

private:

};


class C : public B
{
public:

C() : B() { }

protected:

private:

using B::var;

};

class D : public C
{
public:

D() : C()
{
B::var = 3; // <-- OK
C::var = 3; // <-- error C2248
};

protected:

private:

};

And is there any point of writing public: using B::var; since the variable var is already public inside class B?

不,没有意义。这是多余的。

参见 Using-declaration: In class definition获取更多信息。

关于C++ - "using"关键字说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585501/

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