【发布时间】:2010-04-02 04:04:14
【问题描述】:
我刚刚创建了 2 个具有未定义行为的指针并尝试调用没有创建对象的类成员函数?
我不明白这个?
#include<iostream>
using namespace std;
class Animal
{
public:
void talk()
{
cout<<"I am an animal"<<endl;
}
};
class Dog : public Animal
{
public:
void talk()
{
cout<<"bark"<<endl;
}
};
int main()
{
Animal * a;
Dog * d;
d->talk();
a->talk();
}
【问题讨论】:
-
“我不明白这个?”
-
您的问题是什么?您准确地说明了您所做的事情:您有两个不指向任何地方的指针,并且在取消引用它们时会出现未定义的行为。
-
我认为 OP 的问题是为什么它工作,而不是为什么它不起作用。此代码在我的机器上打印出“树皮”和“我是动物”。正如@James 所指出的 - 未定义的行为是这里的日常。