Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C+中的派生类访问成员变量+; 我目前正在学习C++中的OOP。 class Base { public: Base() {} protected: SomeClass variable; }; class Child : public Base { public: Child() {} void method() { // Access variable } };_C++_Oop - Fatal编程技术网

从C+中的派生类访问成员变量+; 我目前正在学习C++中的OOP。 class Base { public: Base() {} protected: SomeClass variable; }; class Child : public Base { public: Child() {} void method() { // Access variable } };

从C+中的派生类访问成员变量+; 我目前正在学习C++中的OOP。 class Base { public: Base() {} protected: SomeClass variable; }; class Child : public Base { public: Child() {} void method() { // Access variable } };,c++,oop,C++,Oop,从派生类访问基类中的成员变量时,这两种符号之间有什么区别? 此->变量 Base::variable 当缺少第三个选项时,首选什么?只有变量 什么时候是首选 最符合你审美观的 有些情况下,某些选项不起作用。在这种情况下,最好使用那些起作用的。例如:如果普通变量名已被另一个变量隐藏,则不能使用普通变量名。在某些情况下,如果基依赖于模板变量,则不能使用限定名。命名该变量的“完整”表达式为: this->Base::variable 它说: 名称为变量 它位于类型Base 拥有此实例的对象

从派生类访问基类中的成员变量时,这两种符号之间有什么区别?

  • 此->变量
  • Base::variable

当缺少第三个选项时,首选什么?

只有
变量

什么时候是首选

最符合你审美观的

有些情况下,某些选项不起作用。在这种情况下,最好使用那些起作用的。例如:如果普通变量名已被另一个变量隐藏,则不能使用普通变量名。在某些情况下,如果基依赖于模板变量,则不能使用限定名。

命名该变量的“完整”表达式为:

this->Base::variable
它说:

  • 名称为
    变量
  • 它位于类型
    Base
  • 拥有此实例的对象是
    this
  • 由于您在一个可以自动找到基本成员的范围内,因此不需要
    base::

    而且,由于您在一个成员函数中,所有成员都将自动找到,因此不需要
    this->

    您可能需要
    Base::
    来消除范围中其他
    变量的歧义,但是
    这个->
    部分可能已经为您解决了这个问题

    因此,通常,您只需要以下任何一项:

  • 变量
    (正常)
  • this->variable
    (如果来自另一个作用域的内容正在隐藏它)
  • Base::variable
    (如果当前类型中的某些内容正在隐藏它)

  • 至于什么是“首选”…只要你满足了你的需求,你可以做任何你喜欢的事。但是simpler通常被认为是“更好的”,并且会从阅读您的代码的其他人那里收到更少的问题。

    另外,
    variable
    是一个选项1。没有区别,什么都没有,还有2。问十个C++开发者什么是做某事的首选方式会导致十五个不同的答案,甚至当代码< SomeClass < /COD>继承到<代码> ChildSomeClass < /代码>中的差异时,它也被用在<子代码>子< /代码>的子类中。静态变量(除非由于无法访问而需要),因此读者可以快速识别出这是一个静态变量。@AlexGeorg当您需要
    基::
    但它不是静态成员时会发生什么?