Friday, May 30, 2008

C++ Object Slicing

2 comments
What is object slicing?

  • Object slicing is a concept where additional attributes of a derived class object is sliced to form a base class object.
  • Object slicing doesn't occur when pointers or references to objects are passed as function arguments since both the pointers are of the same size.
  • Object slicing will be noticed when pass by value is done for a derived class object for a function accepting base class object.
  • Object slicing could be prevented by making the base class function pure virtual there by disallowing object creation.


EXAMPLE: Demonstrate the concept of object slicing

#include <iostream>
using namespace std;

class Base {
int data1;
int data2;
public:
Base(int a, int b) {
data1 = a;
data2 = b;
}

virtual void display() {
cout << "I am Base class" << endl;
}
};

class Derived : public Base {
int data3;
public:
Derived(int a, int b, int c) : Base(a, b) {
data3 = c;
}

void display() {
cout << "I am Derived class" << endl;
}
};

void somefunc ( Base obj )
{
obj.display();
}

int main()
{
Base b(10, 20);
Derived d(100, 200, 300);

somefunc(b);
somefunc(d);
}

OUTPUT:
I am Base class
I am Base class

If You Enjoyed This, Take 5 Seconds To Share It

2 comments:

  1. Can You please tell me when to use this feature in your program.
    one use I can guess is to initialize the base class object.
    Please tell me the practical usages.

    Thanks
    -Avinash

    ReplyDelete
  2. Very good explanation, Thanks. - Dinesh

    ReplyDelete