Karachi GupShup
Karachi GupShup
Karachi GupShup
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Karachi GupShup

Karachi GupShup
 
HomeGame ZoneSearchLatest imagesRegisterLog in

 

 Virtual member functions

Go down 
AuthorMessage
meodingu
Member
meodingu


Male Number of posts : 270
Pointz :
Virtual member functions  Left_bar_bleue0 / 1000 / 100Virtual member functions  Right_bar_bleue


Virtual member functions  Empty
PostSubject: Virtual member functions    Virtual member functions  EmptyTue 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
 
Virtual member functions
Back to top 
Page 1 of 1

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