किसी व्यंजक में जब Constructor या Variable अलग-अलग प्रकार के use किये जाते हैं। तब C और C++ में basic operator स्वत: ही convert हो जाते हैं, इसी प्रकार Assignment operator में जब एक data type variable को दूसरे data type variable से initialize किया जाता हैं तो वहाँ भी उनका type स्वत: परिवर्तित हो जाता हैं।
आवश्यक परिवर्तन Conversion Required | Conversion (परिवर्तन) | |
---|---|---|
Source Program | Destination Class | |
Basic To Class | Not Application | Constructor |
Class To Basic | Casting Operator | Not Application |
Class To Class | Casting Operator | Constructor |
इस प्रक्रिया को type conversion को derived data type पर भी use किया जा सकता हैं। इसके आधार पर type conversion की निम्न स्थितियाँ होती हैं –
- Basic to basic Conversion
- Basic to class conversion
- Class to basic conversion
- Class to class coversion
अब हम इन सभी को एक एक करके उदाहरण सहित समझेंगे
Basic to Basic Conversion
इसमें Basic data type (int, char, float) को किसी अन्य basic data type में Convert किया जाता हैं। यह Conversion स्वत: ही हो जाता हैं। उदहारण के लिये –
- int से float में Conversion
- Char से int में Conversion
Example
#include <iostream.h> #include <conio.h> void main( ) { clrscr(); char a ; a = ‘a’ ; int r; r = a; cout << “r=” << r; }
Basic to Class Conversion
जब किसी data type को class type में convert किया जाता हैं तो इसे basic to class conversion कहा जाता हैं। basic to class conversion के लिये Constructor का प्रयोग किया जाता हैं। जैसे –
Test (int 5) { a = 5; }
यह Constructor Basic Data type int 5 से test object बना रहा हैं। इसके लिये हम निम्न उदाहरण से समझते हैं –
#include <iostream.h> #include <conio.h> class test { int a; Public: test() { } // Empty Constrictor test (int s) // Parameterized Constrictor { a = 5; } void show() { cout<<"\n value is ="<<a; } }; Void main() { clrscr(); int basic; // basic data-type basic = 30; test object ; // Class data type object = basic; // basic to class conversion object.show(); }
Output
Value is = 80
Class to basic Conversion
इसमें किसी class object को basic data-type में convert किया जाता हैं। इस Conversion के लिये Overload Casting Operator का प्रयोग किया जाता हैं। Overload Casting Operator एक Member Function होता हैं, जिसका Syntax निम्नलिखित हैं –
operator type name ( )
{
Function body
}
#include <iostream.h> #include <conio.h> Class test { int m; Public: test (int x) { m = x; } void show() { cout << “\n value is =” << m; } Operator int() //casting operator { int y; y = m; return y; } }; void main ( ) { clrscr(); test t (150); t.show(); int a; a = t cout << “a =” << a; }
Class to Class Conversion
कभी-कभी हमें एक Class type से दूसरे class type में परिवर्तन की आवश्यकता होती हैं। जैसे :- Object x = Object y
Object x x class को Object हैं तथा Object y, y class का object हैं। class y, class x में परिवर्तित किया जाता हैं। चूँकि यह परिवर्तन class y से class x में किया गया हैं अत: y को source class a x को destination class के नाम से पुकारा जाता हैं।
इस प्रकार के परिवर्तन Constructor या Conversion function की सहायता से किये जाते हैं। जैसे – Class to basic conversion में costing operator function के द्वारा conversion किया जाता हैं जिसमें Operator type name ( ) उस class के object को type name में बदलता हैं जिसका वह सदस्य हैं।
Object के मध्य परिवर्तन की स्थिति में type name को destination class समझा जाता हैं। इसलिये जब class को बदलने की आवश्यकता होती हैं तब Costing Operator function का use किया जाता हैं।
अर्थात् class to class conversion में source class में costing operator तथा destination class में constructor का प्रयोग किया जाता हैं।
#include <iostream.h> #include <conio.h> class test // source class { int a; Public: test 1() { a = 200; } int geta() { return a ; } void show() { cout << “\n test 1 class value : =” << a; } }; class test2 // destination class { Private : int b: Public : test 2() { // Empty Constrictor } void display() { cout << “/n test 2 value : =” <<b; } test2(test 1) // conversion constructor { b = r.geta(); } }; void main() { clrscr(); test t1; t1.show(); test2 t2 ; t2 = t1 t2.display(); }
Output
Test 1 value = 200
Test 2 value = 200