Polymorphism in C++:
इसी प्रकार के Decoupling Effect को हम तब भी प्राप्त कर सकते हैं, जब हम Object को किसी Function Argument के रूप में By Pointer या By Address Pass करते हैं। इसी उदाहरण को हम निम्नानुसार Pointers के आधार पर भी Convert कर सकते हैं:
?
// tests virtual functions and
passing objects by pointer
#include
#include
class Base
{
public:
virtual void speak()
{ cout << “\nBase speaks"; }
};
class DerivedClass1 : public Base
{
public:
void speak()
{
cout << “\nDerivedClass1
speaks";
}
};
class DerivedClass2 :
public Base
{
public:
void speak()
{
cout << “\nDerivedClass2 speaks";
}
};
//Main Program
void main()
{
void func(Base*);
// prototype (note reference argument)
DerivedClass1 d1;
// create derived class object d1
DerivedClass2 d2;
// create derived class object d2
func(&d1);
// pass address of d1 to func()
func(&d2);
// pass address of d2 to func()
}
UDF
void func(Base* ptr)
{
ptr->speak();
}
इस उदाहरण की Classes पिछले उदाहरण के समान ही हैं। अन्तर केवल main() Function में है। इस main() Function से Objects func() Function में By Reference के स्थान पर By Pointer Pass किए गए हैं और speak() Member Function को Access करने के लिए -> Operator का प्रयोग किया गया है। यदि हम हमारे इस Program का Output देखे तो वह निम्नानुसार प्राप्त होता है:
DerivedClass1
DerivedClass2
सामान्यतया References का प्रयोग Arguments के रूप में तब किया जाता है जब Objects को Definition द्वारा Create किया जाता है। इस स्थिति में हमें Object का नाम पता होता है। लेकिन जब Objects को new Operator द्वारा Create किया जाता है और हमारे पास Object का केवल Pointer होता है, नाम नहीं] तब हम Object को Function मे By Address Pass करते हैं या Object का Pointer Function में Pass करते हैं।
References Pointers की तुलना में अधिक सुरिक्षत होते हैं, क्योंकि Pointers जिन Objects को Point करते हैं, उनके Data को Pointer द्वारा Change किया जा सकता है, लेकिन References केवल एक ही बार Initialize होते हैं और उनके Data को Change नहीं किया जा सकता है।
चलिए, हम एक बडा उदाहरण देखते हैं जो ज्यादा अच्छी तरह से समझा सकता है कि Polymorphism किस प्रकार से हमारे Code को किसी
Specific Class से
Independent बना सकता है। हमने इसी अध्याय में जो person, student व teacher का उदाहरण लिया था, उसी उदाहरण के
Class-User Part को
Rewrite कर रहे हैं।
No comments:
Post a Comment