Type Conversion

किसी व्‍यंजक में जब Constructor या Variable अलग-अलग प्रकार के use किये जाते हैं। तब C और C++ में basic operator स्‍वत: ही convert हो जाते हैं, इसी प्रकार Assignment operator में जब एक data type variable को दूसरे data type variable से initialize किया जाता हैं तो वहाँ भी उनका type स्‍वत: परिवर्तित हो जाता हैं।

आवश्यक परिवर्तन Conversion RequiredConversion (परिवर्तन)
Source ProgramDestination Class
Basic To ClassNot ApplicationConstructor
Class To BasicCasting OperatorNot Application
Class To ClassCasting OperatorConstructor

इस प्रक्रिया को type conversion को derived data type पर भी use किया जा सकता हैं। इसके आधार पर type conversion की निम्‍न स्थितियाँ होती हैं –

  1. Basic to basic Conversion
  2. Basic to class conversion
  3. Class to basic conversion
  4. 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

error: Content is protected !!