Please refer to below code:
#define mPtr (static_cast<Dog*> (new(Animal)))
class Animal{
public:
virtual void talk(){cout<<"A";}
};
class Dog:public Animal{
int test;
public:
void talk(){bark();}
void bark(){
test=0;cout<<test;
}
};
int main() {
mPtr->talk();
mPtr->bark();
return 0;
}
Output:
A0
Is it valid or an undefined behaviour to have base class talk() is executing?
Aucun commentaire:
Enregistrer un commentaire