当前位置: 代码迷 >> 综合 >> C++ 虚函数的两个例子
  详细解决方案

C++ 虚函数的两个例子

热度:92   发布时间:2024-02-10 07:29:30.0

虚函数是动态联编的

eg1: 

class A
{
public:virtual void foo(){cout << "A::foo() is called" << endl;}
};
class B :public A
{
public:void foo(){cout << "B::foo() is called" << endl;}
};
int main(void)
{A *a = new B();a->foo();   // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!  return 0;
}
//B::foo() is called

 eg2:虚函数根据传入类的不同,分别调用不同的函数

class Animal
{
public:virtual void eat() {std::cout << "I'm eating generic food.\n";}
};class Cat : public Animal
{
public:void eat() {std::cout << "I'm eating a rat.\n";}
};
void func(Animal *xyz) {xyz->eat();
}
int main(void)
{Animal *animal = new Animal;Cat *cat = new Cat; func(animal);func(cat);return 0;
}

 

 

  相关解决方案