Expand|Select|Wrap|Line Numbers
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- class Base
- {
- int i;
- public:
- Base()
- {
- std::cout<<"Base Constructor"<<endl;
- }
- Base(const Base &)
- {
- std::cout<<"Base Copy Constructor"<<endl;
- }
- virtual ~Base()
- {
- std::cout<<"Base Destructor"<<endl;
- }
- virtual void print()
- {
- std::cout<<"Its Base"<<endl;
- }
- virtual void print_s ()
- {
- std::cout << "Its Base print_2" << endl;
- }
- };
- class Derived : public Base
- {
- public:
- Derived()
- {
- std::cout<<"Derived Constructor"<<endl;
- }
- Derived(const Derived &)
- {
- std::cout<<"Derived Copy Constructor"<<endl;
- }
- virtual ~Derived()
- {
- std::cout<<"Derived Destructor"<<endl;
- }
- void print()
- {
- std::cout<<"Its Derived"<<endl;
- }
- void print_s ()
- {
- std::cout << "Its Derived print_2" << endl;
- }
- };
- int main(int argc, char *argv[])
- {
- Base* b = new Derived;
- Base* bptr = new Derived;
- (*bptr) = static_cast<Base>(*b);
- bptr->print();
- return 0;
- }