diff --git a/Obj slice.cpp b/Obj slice.cpp new file mode 100644 index 0000000..22d769a --- /dev/null +++ b/Obj slice.cpp @@ -0,0 +1,38 @@ +#include +using namespace std; + +class Base +{ +protected: + int i; +public: + Base(int a) { i = a; } + virtual void display() + { cout << "I am Base class object, i = " << i << endl; } +}; + +class Derived : public Base +{ + int j; +public: + Derived(int a, int b) : Base(a) { j = b; } + virtual void display() + { cout << "I am Derived class object, i = " + << i << ", j = " << j << endl; } +}; + +// Global method, Base class object is passed by value +void somefunc (Base obj) +{ + obj.display(); +} + +int main() +{ + Base b(33); + Derived d(45, 54); + somefunc(b); + somefunc(d); // Object Slicing, the member j of d is sliced off + return 0; +} +