online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include<cstdio> class Cup{ protected: int capacity; public: Cup(int c){ capacity = c; } virtual int Capacity(){ printf("Parent class Capacity:%d \n", capacity); return 0; } virtual void Name(){ printf("Cup\n"); } void NonVirtualFun(){ printf("NonVirtualFun\n"); } }; class PlasticCup : public Cup{ public: PlasticCup(int c):Cup(c){} int Capacity(){ printf("PlasticCup class Capacity:%d \n", capacity); return 0; } void Name(){ printf("Plastic Cup\n"); } virtual void Brand(){ printf("wahaha\n"); } }; class Glass: public Cup{ public: Glass(int c):Cup(c){} int Capacity(){ printf("Glass class Capacity:%d \n", capacity); return 0; } //void Name(){ // printf("Glass \n"); //} virtual void PlaceOfOrigin(){ printf("China\n"); } }; void uncommonPrint(Cup* cup){ printf("\n-----\n"); typedef void (*NonVirtualFun_FUN)(void*); typedef int (*Capatity_FUN)(void*); typedef void (*Name_FUN)(void*); typedef void*ADRESS; NonVirtualFun_FUN foo=(NonVirtualFun_FUN)(&Cup::NonVirtualFun);//bar成员函数为非虚函数 foo((void*)cup); ADRESS *vtable_addr=*((ADRESS**)(cup)); Capatity_FUN fooCapacity=(Capatity_FUN)*(vtable_addr); fooCapacity((void*)cup); Name_FUN nameFoo=(Name_FUN)*(vtable_addr+1); nameFoo((void*)cup); printf("----\n\n"); } void routinePrint(Cup*c){ c->NonVirtualFun(); c->Capacity(); c->Name(); } int main(){ Cup* cup = new PlasticCup(3); routinePrint(cup); uncommonPrint(cup); delete cup; printf("\n===========================\n"); cup=new Glass(5); routinePrint(cup); uncommonPrint(cup); delete cup; return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue