கன்ஸ்ட்ரக்டர்
என்பது ஆப்ஜெக்டை தொடக்க மதிப்பிருத்தப் பயன்படும் சிறப்பு மெம்பர் ஃபங்க்சன் ஆகும்.ஒரு
கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கும் பொழுது கன்ஸ்ட்ரக்டர் தானாக அழைக்கப்படுகின்றது.
விதிகள்:
1.     
கன்ஸ்ட்ரக்டர்
பெயரானது கிளாஸின் பெயராகவே இருக்க வேண்டும்.
2.     
ரிடர்ன்
டைப்பை குறிப்பிடக்க் கூடாது.
சிண்டாக்ஸ்:
Class
class_name
{
Private:
__________________
_________________                                            
Public:
Class_name()
{
____________________________
____________________________
}
Protected:
______________________________
________________________________
};
ஒரு கிளாஸிற்கு
ஆப்ஜெக்ட் உருவாக்கும் பொழுது கன்ஸ்ட்ரக்டர் தானாகவே அழைக்கப்படுகின்றது.
சான்று
நிரல்-1:
#include
<iostream>
using
namespace std;
class
exam
{
private:
    int sno,mark1,mark2;
public:
    exam()
    {
        sno=mark1=mark2=0;
    }
    void showdata()
    {
        cout<<"sno:
"<<sno<<" mark1: "<<mark1<<" mark2:
"<<mark2<<endl;
    }
    void getdata()
    {
        cout<<"Enter sno";
        cin>>sno;
        cout<<"Enter two
marks";
        cin>>mark1>>mark2;
    }
};
int
main()
{
    exam e;
    e.showdata();
    e.getdata();
    e.showdata();
    return 0;
}
வெளியீடு:
sno:
0 mark1: 0 mark2: 0
Enter
sno101
Enter
two marks85 95
sno:
101 mark1: 85 mark2: 95
Process
returned 0 (0x0)   execution time :
12.308 s
Press
any key to continue.
ஓவர் லோடடு
கன்ஸ்ட்ரக்டர்:
ஓரு ஃபங்க்சனை
எப்படி ஓவர் லோட் செய்ய முடியுமோ அதே போல் ஒரு கன்ஸ்ட்ரக்டரையும் ஓவர் லோட் செய்யலாம்.
அதாவது ஒரு கிளாஸில் ஒன்றிற்க்கு மேற்பட்ட கன்ஸ்ட்ரக்டர் இருக்கும்.அதற்கு அனுப்ப்படும்
பாராமீட்டரைப் பொருத்து அதன் அழைப்பு நிகழும்.
சான்று
நிரல்-2:
#include
<iostream>
using
namespace std;
class
exam
{
private:
    int sno,mark1,mark2;
public:
    exam()
    {
        sno=mark1=mark2=0;
    }
    exam(int a,int b,int c)
    {
        sno=a;
        mark1=b;
        mark2=c;
    }
    void showdata()
    {
        cout<<"sno:
"<<sno<<" mark1: "<<mark1<<" mark2:
"<<mark2<<endl;
    }
};
int
main()
{
    exam e1;
    exam e2(101,90,95);
    e1.showdata();
    e2.showdata();
    return 0;
}
வெளியீடு:
sno:
0 mark1: 0 mark2: 0
sno:
101 mark1: 90 mark2: 95
Process
returned 0 (0x0)   execution time : 0.749
s
Press
any key to continue.
டிஃபால்ட்
கன்ஸ்ட்ரக்டர்:
எந்த ஆர்க்கியுமெண்டும்
இல்லாத கன்ஸ்ட்ரக்டர் டிஃபால்ட் கன்ஸ்ட்ரக்டர் ஆகும். இது நாம் எழுதா விட்டாலும் சி++
கம்பைலர் தானாகவே இயங்கும். எனினும் ஒரு பாரா மீட்டரைஸ்டு கன்ஸ்ட்ரக்டரை எழுதினால்
டிஃபால்ட் நாம் தான் எழுத வேண்டும்.
சான்று
நிரல்-3
#include
<iostream>
using
namespace std;
class
exam
{
  private:
      int sno,mark1,mark2;
  public:
    exam()//default constructor
    {
    }
};
int
main()
{
    cout << "Hello world!"
<< endl;
    return 0;
}
காப்பி
கன்ஸ்ட்ரக்டர்:
ஒரு ஆப்ஜெக்டின் மதிப்புகளை அதே கிளாஸின் மற்றொரு கிளாஸிற்கு காப்பி செய்ய காப்பி கன்ஸ்ட்ரக்டர் பயன்படுகின்றது.
ஒரு ஆப்ஜெக்டின் மதிப்புகளை அதே கிளாஸின் மற்றொரு கிளாஸிற்கு காப்பி செய்ய காப்பி கன்ஸ்ட்ரக்டர் பயன்படுகின்றது.
சான்று
நிரல்-4:
#include
<iostream>
using
namespace std;
class
item
{
private:
    int itno;
    string itname;
    float price;
public:
    item(int a,string b,float c)
    {
        itno=a;
        itname=b;
        price=c;
    }
    item(item &ptr)
    {
        itno=ptr.itno;
        itname=ptr.itname;
        price=ptr.price;
    }
    void showdata()
    {
        cout<<"item
no:"<<itno<<" itname:"<<itname<<"
price:"<<price<<endl;
    }
};
int
main()
{
   item i1(1,"Monitor",4500);
   item i2(i1);
   cout<<"first item"<<endl;
   i1.showdata();
   cout<<"second
item"<<endl;
   i2.showdata();
    return 0;
}
வெளியீடு:
first
item
item
no:1 itname:Monitor price:4500
second
item
item
no:1 itname:Monitor price:4500
Process
returned 0 (0x0)   execution time : 0.686
s
Press
any key to continue.
டெஸ்ட்ரக்டர்:
ஒரு ஆப்ஜெக்ட்
ஆனது அதன் முடிவு நிலைக்கு வரும் பொழுது டெஸ்ட்ரக்டர் அழைக்கப்படுகின்றது. இதுவும்
கிளாஸின் பெயரில் தான் 
இருக்கும்
ஆனால் முன்னதாக ஒரு ~ சிம்பல் இருக்கும்.
இது ஒரு
ஆப்ஜெக்ட் பயன்படுத்திய மெமரியை காலி செய்ய பயன்படுகின்றது.இது எந்த ஆர்க்கியுமெண்டையும்
ஏற்காது.
சான்று
நிரல்-5:
#include
<iostream>
using
namespace std;
class
book
{
private:
    int book_no;
    string book_name;
public:
    book()
    {
        book_no=10;
        book_name="java";
    }
    ~book()
{
    book_no=0;
    book_name="";
    cout<<"destructor
invoked"<<endl;
    showdetail();
}
void
showdetail()
{
    cout<<"book no:
"<<book_no<<" book name:
"<<book_name<<endl;
}
};
int
main()
{
    book b;
    b.showdetail();
    return 0;
}
வெளியீடு:
book
no: 10 book name: java
destructor
invokedbook no: 0 book name:
Muthu karthikeyan,Madurai
 
 

 
 
