[TYPES] Any formal models of method lookup mechanism in C++?
Yanlin Wang
huohuohuomumu at gmail.com
Mon Jun 26 10:51:48 EDT 2017
Dear all,
I am formalizing a C++-like multiple inheritance model, please look at this piece of code:
//g++ 5.4.0#include <iostream>class Deck { public: virtual void draw () {
std::cout << "Deck::draw" << std::endl;
} virtual void shuffleAndDraw () {
std::cout << "Deck::shuffle" << std::endl; draw(); }};class LDeck : public Deck { public:
virtual void draw () {
std::cout << "L::draw" << std::endl;
}};class Paint { public:
virtual void draw () {
std::cout << "Paint::draw" << std::endl;
}};class Top : public LDeck, public Paint {};int main(){ Top b; Top *a = &b; a->shuffleAndDraw();//shuffle and Ldraw a->Deck::draw(); //draw a->Paint::draw();//paint ((Deck*)a)->draw();//LDraw ((Paint*)a)->draw();//paint return 0;}
For resolving the method call “ ((Deck*)a)->draw()”, C++ uses both the static (Deck) and dynamic(Top) type information of object a, so that the method call “draw()” dispatches to LDeck::draw().
I was wondering whether there are any formal models that describes this method lookup mechanism in C++. If anyone knows, could you please let me know? Thank you!
Best regards,
Yanlin Wang
More information about the Types-list
mailing list