අතථ්ය ඩිස්ට්රැක්ටර් යනු කුමක්ද හෝ අථත්ය ඩිස්ට්රැක්ටර් භාවිතා කරන්නේ කෙසේද
පංති ඩිස්ට්රැක්ටර් යනු පංතියට පෙර නමට සමාන ශ්රිතයක් වන අතර එය ~ විසින් පන්තිය විසින් වෙන් කරන ලද මතකය නැවත වෙන් කරනු ඇත. අපට අතථ්ය විනාශ කරන්නෙකු අවශ්ය ඇයි
අතථ්ය කාර්යයන් කිහිපයක් සහිත පහත නියැදිය බලන්න
ඔබට ලිපියක් ඉහළ හෝ පහළ බවට පරිවර්තනය කළ හැකි ආකාරය නියැදිය ද කියයි
#include "stdafx.h"
#include<iostream>
using namespace std;
// program to convert the lower to upper orlower
class convertch
{
public:
//void convertch(){};
virtual char* convertChar() = 0;
~convertch(){};
};
class MakeLower :public convertch
{
public:
MakeLower(char *passLetter)
{
tolower = true;
Letter = new char[30];
strcpy(Letter, passLetter);
}
virtual ~MakeLower()
{
cout<< "called ~MakeLower()"<<"\n";
delete[] Letter;
}
char* convertChar()
{
size_t len = strlen(Letter);
for(int i= 0;i<len;i++)
Letter[i] = Letter[i] + 32;
return Letter;
}
private:
char *Letter;
bool tolower;
};
class MakeUpper : public convertch
{
public:
MakeUpper(char *passLetter)
{
Letter = new char[30];
toupper = true;
strcpy(Letter, passLetter);
}
char* convertChar()
{
size_t len = strlen(Letter);
for(int i= 0;i<len;i++)
Letter[i] = Letter[i] - 32;
return Letter;
}
virtual ~MakeUpper()
{
cout<< "called ~MakeUpper()"<<"\n";
delete Letter;
}
private:
char *Letter;
bool toupper;
};
int _tmain(int argc, _TCHAR* argv[])
{
convertch *makeupper = new MakeUpper("hai");
cout<< "Eneterd : hai = " <<makeupper->convertChar()<<" ";
delete makeupper;
convertch *makelower = new MakeLower("HAI");;
cout<<"Eneterd : HAI = " <<makelower->convertChar()<<" ";
delete makelower;
return 0;
}
ඉහත නියැදියෙන් ඔබට පෙනෙනුයේ MakeUpper සහ MakeLower පන්තිය සඳහා වන විනාශ කරන්නා කැඳවනු නොලබන බවයි.
අතථ්ය ඩිස්ට්රැක්ටරය සමඟ ඊළඟ නියැදිය බලන්න
#include "stdafx.h"
#include<iostream>
using namespace std;
// program to convert the lower to upper orlower
class convertch
{
public:
//void convertch(){};
virtual char* convertChar() = 0;
virtual ~convertch(){}; // defined the virtual destructor
};
class MakeLower :public convertch
{
public:
MakeLower(char *passLetter)
{
tolower = true;
Letter = new char[30];
strcpy(Letter, passLetter);
}
virtual ~MakeLower()
{
cout<< "called ~MakeLower()"<<"\n";
delete[] Letter;
}
char* convertChar()
{
size_t len = strlen(Letter);
for(int i= 0;i<len;i++)
{
Letter[i] = Letter[i] + 32;
}
return Letter;
}
private:
char *Letter;
bool tolower;
};
class MakeUpper : public convertch
{
public:
MakeUpper(char *passLetter)
{
Letter = new char[30];
toupper = true;
strcpy(Letter, passLetter);
}
char* convertChar()
{
size_t len = strlen(Letter);
for(int i= 0;i<len;i++)
{
Letter[i] = Letter[i] - 32;
}
return Letter;
}
virtual ~MakeUpper()
{
cout<< "called ~MakeUpper()"<<"\n";
delete Letter;
}
private:
char *Letter;
bool toupper;
};
int _tmain(int argc, _TCHAR* argv[])
{
convertch *makeupper = new MakeUpper("hai");
cout<< "Eneterd : hai = " <<makeupper->convertChar()<<" \n";
delete makeupper;
convertch *makelower = new MakeLower("HAI");;
cout<<"Eneterd : HAI = " <<makelower->convertChar()<<"\n ";
delete makelower;
return 0;
}
අතථ්ය ඩිස්ට්රැක්ටරය පැහැදිලිවම පන්තියේ වඩාත්ම ව්යුත්පන්න ධාවන කාල විනාශකරුවා ලෙස හඳුන්වනු ඇති අතර එමඟින් එම වස්තුව නිසි ආකාරයෙන් ඉවත් කිරීමට හැකි වේ.
නැතහොත් සබැඳියට පිවිසෙන්න
https://web.archive.org/web/20130822173509/http://www.programminggallery.com/article_details.php?article_id=138