C++ question regarding classes, inheritence

Associate
Joined
26 Jun 2003
Posts
1,140
Location
North West
Ive recently seen a bit of code, cant remember excally what is was but it went sumthing like this:

class MyClass1 {
// stuff
};

class MyClass2 : public MyClass1 {
// stuff
};

Now to declare an object of these, I thought the way you did it was like this:

MyClass1 myClass1;
MyClass1 *myClass1 = new MyClass1;
MyClass2 myClass2 = new MyClass2;
etc.

But I saw it declared like this:

MyClass2 *myClass2 = new MyClass1;
or
MyClass1 *myClass1 = new MyClass2;
(can both be used?)

As you can see its declared MyClass2 but called new MyClass1?
(Similar to doing: int myInt = new String, i know bad example but this is what it seems like).

Can someone clarify how this works?

Thx
 
Last edited:
Thanks a lot for your explanations. They helped.

So if I get this right, regarding virtual and inheritence:

class Base
{
public:
vurtual void functionA(int x);
void functionB(int x);
}

class Derived : public Base
{
public:
void functionA(int x);
void functionB(int x);
}

BaseClass *base = new Derived;

base->functionA(1); // This will call derived's functionA?
base->functionB(1); // This will call base's functionB because functionB is not vurtual?

Thx
 
I just used my brain and wrote this program to test. Works fine and I now understand it.

Thx for your help.

Code:
#include <iostream>

using namespace std;

class Base
{
	public:
		virtual void functionA() { cout << "Base FunctionA" << endl; }
		        void functionB() { cout << "Base FunctionB" << endl; }
};

class Derived : public Base
{
	public:
		void functionA() { cout << "Derived FunctionA" << endl;}
		void functionB() { cout << "Derived FunctionB" << endl;}
};

int main()
{
	Base *base = new Derived;
	
	base->functionA(); // Calls derived functionA
	base->functionB(); // Calls base functionB
	
	return 0;
}
 
Back
Top Bottom