-
Junior Member
virtual function
what is the use of virtual function in c++
-
Junior Member
Re: virtual function
the virtual function can be defined in base class and redefined by the derived classes
-
Junior Member
Re: virtual function
[QUOTE=abhijithvardhan;21822]the virtual function can be defined in base class and redefined by the derived classes.and it is used to control the technic of acquarism of properties.
the general syntax is
class d_class name:virtual b_class name
where,
d_class name, is name of the derived class and
b_class name, is name of the parent (or) base class name
-
Contributing Member
Re: virtual function
virtual function:
- share the properties of classes.
example:
there are two super classes:
parent and mother and son
now son is the subclass of the two classes i.e parent and mother.
so son share the properties of both
-
Expert Member
Re: virtual function
C++ virtual function is member function of a class, Declared with virtual keyword and Usually has a different functionality in the derived class and
this function call is resolved at run-time .
The Reason why a C++ virtual function will be used is to have a different functionality in the derived class.
-
Junior Member
Re: virtual function
I would like to explain briefly how it actually works
Whenever a program has a virtual function declared, a v-table is constructed for the class. The v-table consists of addresses to the virtual functions for classes that contain one or more virtual functions. The object of the class containing the virtual function contains a virtual pointer that points to the base address of the virtual table in memory. Whenever there is a virtual function call, the v-table is used to resolve to the function address. An object of the class that contains one or more virtual functions contains a virtual pointer called the vptr at the very beginning of the object in the memory. Hence the size of the object in this case increases by the size of the pointer. This vptr contains the base address of the virtual table in memory. Note that virtual tables are class specific, i.e., there is only one virtual table for a class irrespective of the number of virtual functions it contains. This virtual table in turn contains the base addresses of one or more virtual functions of the class. At the time when a virtual function is called on an object, the vptr of that object provides the base address of the virtual table for that class in memory. This table is used to resolve the function call as it contains the addresses of all the virtual functions of that class. This is how dynamic binding is resolved during a virtual function call.
-
Junior Member
Re: virtual function
Here is an example of virtual function
class India
{
public:
virtual void country()
{
cout<<"BaseClass: I am in India\n";
}
};
class AP : public India
{
public:
void country()
{
cout<<"DerivedClass: I am in AP\n";
}
};
void main()
{
India *x,*y;
x = new India();
x->country();
y = new AP();
y->country();
}
Output:
BaseClass: I am in India
DerivedClass: I am in AP
If the function had not been declared as VIRTUAL ,then base class function would have been called all the time.Because the function address would have been statically bounded during compile time.But due to the virtual keyword,linking is done during runtime and hence derived class function is invoked for the second time in this example.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules