Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Intermediate
Jun 10, 2008

Calling a Virtual Method from a Non-Virtual Method

How can you tell which f2() will be invoked: A::f2() method or B::f2()? In the following code, f1 is not virtual—thus, it calls A::f1(); which in turn calls the f2() function. Because f2() is virtual, it doesnt call A::f2() it calls B::f2().

class A{
public:
 void f1(){
cout<<"A::f1 invoked "<<endl;
f2(); //calling f2 function
 }

virtual void f2()
{
cout<<" A::f2() invoked"<<endl;};

class B:public A
{
 public:
   void f2(){
cout<<"B::f2()  is invoked"<<endl;
}
};

int main()
{
A *a=new B();
a->f1(); //f1 is not virtual ;
return 1;
}

Venkata Edara
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap