Karachi GupShup

Karachi GupShup

Karachi GupShup
 
HomeGame ZoneFAQSearchMemberlistUsergroupsRegisterLog in

Share | 
 

 Virtual member functions

View previous topic View next topic Go down 
AuthorMessage
meodingu
Member
avatar

Male Number of posts : 270
Pointz :
0 / 1000 / 100


PostSubject: Virtual member functions    Tue Jan 11, 2011 4:37 pm

Virtual member functions
Ordinarily when a function in a derived class overrides a function in a base class, the function to call is determined by the type of the object. A given function is overridden when there exists no difference, in the number or type of parameters, between two or more definitions of that function. Hence, at compile time it may not be possible to determine the type of the object and therefore the correct function to call, given only a base class pointer; the decision is therefore put off until runtime. This is called dynamic dispatch. Virtual member functions or methods[17] allow the most specific implementation of the function to be called, according to the actual run-time type of the object. In C++ implementations, this is commonly done using virtual function tables. If the object type is known, this may be bypassed by prepending a fully qualified class name before the function call, but in general calls to virtual functions are resolved at run time.
In addition to standard member functions, operator overloads and destructors can be virtual. A general rule of thumb is that if any functions in the class are virtual, the destructor should be as well. As the type of an object at its creation is known at compile time, constructors, and by extension copy constructors, cannot be virtual. Nonetheless a situation may arise where a copy of an object needs to be created when a pointer to a derived object is passed as a pointer to a base object. In such a case a common solution is to create a clone() (or similar) function and declare that as virtual. The clone() method creates and returns a copy of the derived class when called.
A member function can also be made "pure virtual" by appending it with = 0 after the closing parenthesis and before the semicolon. A class containing a pure virtual function is called an abstract data type. Objects cannot be created from abstract data types; they can only be derived from. Any derived class inherits the virtual function as pure and must provide a non-pure definition of it (and all other pure virtual functions) before objects of the derived class can be created. A program that attempts to create an object of a class with a pure virtual member function or inherited pure virtual member function is ill-formed.


Französisch Übersetzungen
online math tutor
Back to top Go down
View user profile
 
Virtual member functions
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» New member shout out
» Virtual Rides
» apologies ijustkillyoudude and tank team member
» New TTR Tagged Member
» Virtual Rides!!

Permissions in this forum:You cannot reply to topics in this forum
Karachi GupShup :: Karachi GupShup Information :: Welcome to Karachi GupShup-
Jump to: