Size of derived class, in case of multiple inheritance


 
Thread Tools Search this Thread
Top Forums Programming Size of derived class, in case of multiple inheritance
# 1  
Old 02-20-2014
Size of derived class, in case of multiple inheritance

Why, here the size of class 'Derived' is 8 ?
Code:
class Base1
{
 public:
  virtual void f() {  }
};
class Base2
{
 public:
  virtual void f() {  }
};
class Derived : public Base1, Base2
{
 public:
  virtual void f() {  }
};

# 2  
Old 02-20-2014
'virtual' means, 'keep a record inside the class for which function I should call'. Otherwise, the compiler doesn't know anything except the type of the variable/pointer.

For example:

Code:
class Base1
{
 public:
  void f() {  }
};

class Derived : public Base1
{
 public:
  void f() {  }
};

main() {
        Base1 *p=new Derived();
        p->f(); // Without virtual, it calls Base1's f()
}

Adding virtual allows it to remember that f() was overloaded / replaced. This memory takes a little space.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

C++ : Base class member function not accessible from derived class

Hello All, I am a learner in C++. I was testing my inheritance knowledge with following piece of code. #include <iostream> using namespace std; class base { public : void display() { cout << "In base display()" << endl; } void display(int k) {... (2 Replies)
Discussion started by: anand.shah
2 Replies

2. Programming

Size of Derived class, upon virtual base class inheritance

I have the two class definition as follows. class A { public: int a; }; class B : virtual public A{ }; The size of class A is shown as 4, and size of class B is shown as 16. Why is this effect ?. (2 Replies)
Discussion started by: techmonk
2 Replies

3. Programming

Difference in multiple inheritance and multilevel inheritance: same method name ambiguity problem

Hi, In multi-level inheritance: class A { public: void fun() { cout << "A" << endl; } }; class B : public A { public: void fun() { cout << "A" << endl; } }; class C : public B { }; int main() { C c; c.fun(); // Ans: A } (1 Reply)
Discussion started by: royalibrahim
1 Replies

4. UNIX for Advanced & Expert Users

Get pointer for existing device class (struct class) in Linux kernel module

Hi all! I am trying to register a device in an existing device class, but I am having trouble getting the pointer to an existing class. I can create a class in a module, get the pointer to it and then use it to register the device with: *cl = class_create(THIS_MODULE, className);... (0 Replies)
Discussion started by: hdaniel@ualg.pt
0 Replies

5. Shell Programming and Scripting

Choose multiple conditions in case?

Hi all, I am attempting to create a shell script to optimize some routine process. I want this script can let user select the actions they want to do. But I met a problem that my script can only read one input and then do one action. Is it possible to let my script to run more than one... (2 Replies)
Discussion started by: kaiya
2 Replies

6. Shell Programming and Scripting

Multiple conditions in a CASE statement

is it possible to use multiple conditions in a CASE statement? And if so, what is the syntax? I'm trying to use one but can't seem to get it right. I want the statement to be CASE $vendor OR $alias condition 1) statements; condition 2) statements; etc. esac but I keep... (25 Replies)
Discussion started by: Straitsfan
25 Replies

7. Programming

How to make a function friend to both base and derived class

Hi, I have a base class and derived a class from the base class, i want to print & read the data for the object created for the derived class,so i have overloaded both the << and >> operators and also have done the foward declaration. Below is the code snippet, #include <iostream> class... (3 Replies)
Discussion started by: ennstate
3 Replies

8. Shell Programming and Scripting

multiple case

hi all im working in tcsh shell. In sh shell i write for example: case in $www 1 | 2 | 3) arguments;; 4 | 5 | 6) arguments;; esac can anybody tell me the equivalent to tcsh of 1 | 2 | 3)? (2 Replies)
Discussion started by: micromicrin
2 Replies

9. Shell Programming and Scripting

How do I make multiple connections to the server in this case

Given the following code #!/usr/bin/perl -w use IO::Socket; my($handle, $line, $kidpid); $handle = IO::Socket::INET->new( PeerAddr =>"64.22.229.139", PeerPort =>"4321", Proto=>"tcp", ... (0 Replies)
Discussion started by: frequency8
0 Replies
Login or Register to Ask a Question