Friday, November 22, 2019

சி++ -ல் கன்ஸ்ட்ரக்டர்.



கன்ஸ்ட்ரக்டர் என்பது ஆப்ஜெக்டை தொடக்க மதிப்பிருத்தப் பயன்படும் சிறப்பு மெம்பர் ஃபங்க்சன் ஆகும்.ஒரு கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கும் பொழுது கன்ஸ்ட்ரக்டர் தானாக அழைக்கப்படுகின்றது.
விதிகள்:
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:

Thank you
Muthu karthikeyan,Madurai
 




ads Udanz

No comments:

Post a Comment