தொகுதி பாடங்கள் (2/2)
கட்டமைப்பாளர்கள் மற்றும் அழிப்பவர்கள்
கன்ஸ்ட்ரக்டர்கள் மற்றும் டிஸ்ட்ரக்டர்கள் என்பது பொருள்களின் வாழ்க்கைச் சுழற்சியை நிர்வகிக்கும் சிறப்பு உறுப்பினர் செயல்பாடுகள்: அவற்றின் உருவாக்கம் (தொடக்கம்) மற்றும் அவற்றின் அழிவு (வளத்தை சுத்தம் செய்தல்).
கட்டமைப்பாளர்கள்
வகுப்பின் ஒரு பொருள் நினைவகத்தில் உருவாக்கப்படும் போது ஒரு கட்டமைப்பாளர் தானாகவே அழைக்கப்படும்.
- இது வகுப்பின் அதே பெயர்.
- இதில் ** திரும்பும் வகை இல்லை** (
voidகூட இல்லை). - வெவ்வேறு அளவுருக்களை ஏற்க இது ஓவர்லோட் செய்யப்படலாம்.
#include <iostream>
#include <string>
class Item {
private:
std::string name;
double price;
public:
// Parameterized constructor
Item(std::string itemName, double itemPrice) {
name = itemName;
price = itemPrice;
std::cout << "Object " << name << " created." << std::endl;
}
void display() {
std::cout << name << ": " << price << " EUR" << std::endl;
}
};
int main() {
// Implicit call to the constructor passing parameters
Item book("Libro C++", 29.99);
book.display();
return 0;
}இயல்புநிலை கட்டமைப்பாளர்
நீங்கள் எந்த கன்ஸ்ட்ரக்டரையும் வரையறுக்கவில்லை எனில், C++ கம்பைலர் அளவுருக்கள் இல்லாமல் இயல்புநிலை கட்டமைப்பாளரை உருவாக்குகிறது. இருப்பினும், நீங்கள் தனிப்பயன் கட்டமைப்பாளரை அளவுருக்களுடன் எழுதினால், கம்பைலர் இனி தானாகவே இயல்புநிலையை உருவாக்காது, எனவே தேவைப்பட்டால் அதை நீங்கள் வெளிப்படையாக வரையறுக்க வேண்டும்:
class Point {
public:
int x;
int y;
// Explicit default constructor
Point() {
x = 0;
y = 0;
}
};அழிப்பவர்கள்
பொருள் வரம்பிற்கு வெளியே செல்லும் போது அல்லது நினைவகத்தில் இருந்து வெளிப்படையாக அகற்றப்படும் போது ஒரு அழிப்பான் தானாகவே அழைக்கப்படுகிறது.
~** (எ.கா.~Item()) வகுப்பிற்கு முன் இருக்கும் ** அதே பெயரை இது கொண்டுள்ளது.- இது அளவுருக்களை ஏற்காது மற்றும் திரும்பும் வகை இல்லை.
- இது ஆதாரங்களை வெளியிட பயன்படுகிறது (எ.கா., கோப்புகளை மூடுவது, மாறும் வகையில் ஒதுக்கப்பட்ட நினைவகத்தை விடுவித்தல்).
class ResourceManager {
public:
~ResourceManager() {
// Cleanup code
std::cout << "Resources released." << std::endl;
}
};நீங்களே முயற்சி செய்து பாருங்கள்
தனிப்பட்ட உறுப்பினர் std::string பயனர்பெயருடன் பயனர் என்ற வகுப்பை வரையறுக்கவும். ஒரு சரத்தை (பயனர்(std::string name)) ஏற்றுக்கொண்டு, பயனர்பெயரை துவக்க அதைப் பயன்படுத்தும் பொது கட்டமைப்பாளரைச் சேர்க்கவும். பயனர்பெயரை வழங்கும் பொது பெறுபவர் std::string getUsername()ஐச் சேர்க்கவும். முக்கியமாக, 'Alice' ஐக் கடந்து ஒரு பயனர் பொருளை உருவாக்கி, அதன் பயனர்பெயரை std::cout ஐப் பயன்படுத்தி அச்சிடவும்.
குறிப்பைக் காட்டு
கன்ஸ்ட்ரக்டருக்கு வகுப்பின் அதே பெயர் உள்ளது மேலும் எந்த வகையையும் குறிப்பிடவில்லை, `செல்லம்` கூட இல்லை.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
இரண்டு பொது முழு எண் உறுப்பினர்களுடன் புள்ளி என்ற வகுப்பை வரையறுக்கவும்: x மற்றும் y. x மற்றும் y ஐ 0 க்கு துவக்கும் இயல்புநிலை கட்டமைப்பாளரைச் சேர்க்கவும் (அளவுருக்கள் இல்லை) முக்கியமாக, இயல்புநிலை கட்டமைப்பாளரைப் பயன்படுத்தி ஒரு புள்ளி பொருளை உருவாக்கி x மற்றும் y ஐ அச்சிடவும்.
குறிப்பைக் காட்டு
இயல்புநிலை கட்டமைப்பாளர் எந்த வாதங்களையும் எடுக்கவில்லை: `பாயிண்ட்() {x = 0; y = 0; }`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்