From 8c5ef768d9957ae7d5fda4a60f2fe7b744467ada Mon Sep 17 00:00:00 2001 From: pnykEX <47064637+pnykEX@users.noreply.github.com> Date: Tue, 22 Oct 2019 22:23:58 +0530 Subject: [PATCH] Object slicing concept in inheritance --- Obj slice.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Obj slice.cpp 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; +} +