On 2/14/07, Gopi Krishna Komanduri <[EMAIL PROTECTED]> wrote:
> Now My doubt is as I have used Public inheritence , then I can use base class
> public member functions with derived class object. At the same time I should
> use the operator which I overloaded in base class in derived class. But I am
> unable to use it. Could you please explain why it happens so..
You need to use scope resolution - look for base::show() and base::x
in derived in the following example and see if it covers what you're
after?
#include <iostream>
#include <string>
class base{
protected:
int x , y;
public:
base(int _x=10, int _y=20): x(_x), y(_y) {}
virtual void show(std::string s){
std::cout << s << "(base::)x=" << x <<" (base::)y=" << y << std::endl;
}
};
class derived:public base{
int x , y;
public:
derived(int _x=50, int _y=60): x(_x), y(_y) {}
virtual void show(std::string s){
base::show(s);
std::cout << s << "base::x=" << base::x <<" base::y=" <<
base::y << std::endl;
std::cout << s << "(derived::)x=" << x <<" (derived::)y=" << y
<< std::endl;
}
};
int main(){
base b, *pb;
derived d;
pb = new derived;
b.show("b.show() ");
std::cout << std::endl;
pb->show("pb->show() ");
std::cout << std::endl;
d.show("d.show() ");
std::cout << std::endl;
return 0;
}
Output:
b.show() (base::)x=10 (base::)y=20
pb->show() (base::)x=10 (base::)y=20
pb->show() base::x=10 base::y=20
pb->show() (derived::)x=50 (derived::)y=60
d.show() (base::)x=10 (base::)y=20
d.show() base::x=10 base::y=20
d.show() (derived::)x=50 (derived::)y=60
--
PJH
Aio, quantitas magna frumentorum est