继承自己的关系

时间:2017-10-28 21:19:13

标签: c++

我依稀记得在C ++中看一个例子,一个类中有一个成员对象,第一个暴露了一个属于第二个的函数,就像它自己的一样。

这是一个解释我的意思的例子:

class Engine{
   int cylinders;
public:
/* ... */
   int getCylindersCount() { return this->cylinders;}
};

class Car {
   Engine engine;
public:
   /* define getCylindersCount() as if it were a function in class Car */
   /* something like Car::getCylindersCount is engine.getCylindersCount(); */
};

所以基本上Car类的用户可以这样做:

Car mytoyota;
mytoyota.getCylindersCount();

现在,我不是在谈论一个简单的包装器,如:

class Car {
   Engine engine;
public:
   int getCylindersCount() { return engine.getCylindersCount();}
};

你能帮我记住实现这个目的的语法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

没有这样的事情。

但是您所指的语法确实存在:这是一种不推荐使用的方式来更改继承成员函数的访问限定符:

class A
{
  public:
    void foo() {}
};

class B : A
{
  public:
    A::foo; // Otherwise A::foo() would be private.
    // A non-deprecated way to do the same thing:
    // using A::foo;
};