Hello!
Please help me to understand c++ better:
If I have a class ClassA, and a class named ClassB, which is derived from ClassA.
If I have a function:
int f(ClassA x) {}
can I pass a variable of type ClassB to this function?
ClassB b = new ClassB;
f(b);
:(
Thnaks in advance:
R4ZOR
use references or pointers
How do you mean that?
int f(ClassA* x) {}
ClassB b = new ClassB();
f(&b);
I think he is meaning this, I am not sure if this will work.. You have to try ;)
For me programming is always trying.. That's because one thing works for C++ but not for Java or C#...
first of all not
ClassB b = new ClassB;
but
ClassB* b = new ClassB;
secondly of course you can write
f(ClassA x) {}
ClassB* b = new ClassB;
f(*b);
and your compiler will interpret this in the following way:
f((ClassA)(*b)); // TYPECASTING!!!
And inside f will be called member functions of CalssA even if they are overrided in ClassB.
thridly (MAIN SURPRISE)
all changes applyed to x inside f(ClassA x) will not have effect on b!
declaration f(ClassA x) means that inside f will be passed temporarry copy of object *b, which is to be destroyed after exiting from f.
Try to read some books on c++ and start from passing arguments to functions.
(Excuse my poor english)
This is not a "how to learn C++" forum or FAQ, sorry. There are plenty of sites on the web that deal with such things.
You may for example want to read http://www.parashift.com/c++-faq-lite/basics-of-inheritance.html
A Crash Course in C++
http://media.wiley.com/product_data/excerpt/41/07645748/0764574841.pdf
Pretty good if you are already familiar with other OO languages like Java.. etc