21xrx.com
2024-11-10 00:51:27 Sunday
登录
文章检索 我的文章 写文章
C++如何调用子类函数?
2023-06-28 15:29:14 深夜i     --     --
C++ 调用 子类函数

在C++中,子类可以继承基类的方法和属性。当我们需要在子类中调用特定的函数时,我们可以使用作用域解析运算符“::”来实现。

例如,假设我们有一个基类Animal和一个子类Cat。在Animal中有一个虚函数voice(),在Cat中我们想重载这个函数并输出“喵喵”,我们可以这样写:


class Animal{

public:

  virtual void voice()

    cout<<"Animal voice"<<endl;

  

};

class Cat: public Animal{

public:

  void voice()

    cout<<"喵喵"<<endl;

  

};

现在我们可以在主函数中调用这个函数并输出结果:


int main(){

  Animal *a = new Cat();

  a->voice(); //输出“喵喵”

  return 0;

}

在这个例子中,我们首先创建了一个Animal的指针a,并将其指向Cat类的对象。由于Cat重载了Animal的虚函数voice(),当我们调用a->voice()时,程序会自动调用Cat的voice()函数并输出“喵喵”。

需要注意的是,当子类中定义的函数与基类中的函数同名时,在调用时必须使用作用域解析运算符来区分,例如:


class Animal{

public:

  void show()

    cout<<"Animal show"<<endl;

  

};

class Cat: public Animal{

public:

  void show()

    cout<<"Cat show"<<endl;

  

};

int main(){

  Cat *c = new Cat();

  c->show(); //输出“Cat show”

  c->Animal::show(); //输出“Animal show”

  return 0;

}

在这个例子中,我们首先创建了一个Cat的指针c。当我们调用c->show()时,程序会自动调用Cat的show()函数并输出“Cat show”。然而,当我们需要调用基类的show()函数时,我们必须使用作用域解析运算符来区分,例如c->Animal::show()就会调用Animal中的show()函数并输出“Animal show”。

总之,在C++中,子类可以通过继承实现基类的方法和属性,并且可以通过作用域解析运算符来调用特定的函数。对于子类的重载函数和基类的同名函数,我们也需要使用作用域解析运算符来区分。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复