作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在下面的代码中,为什么对引用 c 的最后一次调用 eat() 返回“An animal b is eating.”?根据我的理解,c 是对派生类 Dog 的实例 b 的引用,而 eat() 是一个虚函数。所以它应该返回“A dog b is eating.”
#include <string>
#include <iostream>
using namespace std;
class Animal
{
protected:
string name;
public:
Animal( string _name ):
name(_name)
{
}
virtual void eat()
{
cout << "An animal " << name << " is eating." << endl;
}
};
class Dog : public Animal
{
public:
Dog( string _name ):
Animal(_name)
{
}
void eat()
{
cout << "A dog " << name << " is eating." << endl;
}
};
int main( int argc , char ** argv )
{
Animal a("A");
a.eat();
Dog b("b");
b.eat();
Animal & c = a;
c.eat();
c = b;
c.eat();
return 0;
}
这是输出:
An animal A is eating.
A dog b is eating.
An animal A is eating.
An animal b is eating.
最佳答案
Animal & c = a;
c.eat();
c = b; ///^^^
c.eat();
在 C++ 中,引用一旦被初始化就不能重新绑定(bind)到其他对象。 c
仍然是对象 a
的别名,它是一个 Animal
,因此,您看到了预期的输出。
关于c++ - 在引用上调用虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635478/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!