๐ฉ ๊ฐ์ฒด ๋ฐฐ์ด
๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด
๋ฐ๋ผ์, ๋ฐฐ์ด ์์ฑ์ ๊ฐ์ฒด๊ฐ ํจ๊ป ์์ฑ๋๋ค.
Person arr[3];
Person * per = new Person[3];
๐ฉ ๊ฐ์ฒด ํฌ์ธํฐ ๋ฐฐ์ด
๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๋ ํฌ์ธํฐ ๋ณ์๋ก ์ด๋ค์ง ๋ฐฐ์ด
๋ฐ๋ผ์ ๋ณ๋์ ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
Person * arr[3];
arr[0] = new Person(name, age);
arr[1] = new Person(name, age);
arr[2] = new Person(name, age);
๊ฐ์ฒด ๊ด๋ จ ๋ฐฐ์ด์ ์ ์ธํ ๋๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ์ ์ธํ ์ง, ๊ฐ์ฒด ํฌ์ธํฐ ๋ฐฐ์ด์ ์ ์ธํ ์ง๋ฅผ ๋จผ์ ๊ฒฐ์ ํด์ผ ํ๋ค.
๐ฉ this ํฌ์ธํฐ
๊ทธ ๊ฐ์ด ๊ฒฐ์ ๋์ด ์์ง ์์ ํฌ์ธํฐ์ด๋ค. ์๋ํ๋ฉด this ํฌ์ธํฐ๋ this๊ฐ ์ฌ์ฉ๋ ๊ฐ์ฒด ์์ ์ ์ฃผ์๊ฐ์ ์ ๋ณด๋ก ๋ด๊ณ ์๋ ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
class SimpleClass{
private:
int num;
public:
SimpleClass(int n) : num(n){
cout << "num = " << num << ", ";
cout << "address = " << address << endl;
}
void ShowSimpleData(){
cout << num << endl;
}
SimpleClass * GetThisPointer(){
return this;
}
}
int main(void){
SimpleClass sim1(100);
SimpleClass * ptr1 = sim1.GetThisPointer(); // sim1 ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ ์ฅ
cout << ptr1 << ", ";
ptr1 -> ShowSimpleData();
SimpleClass sim2(200);
SimpleClass * ptr2 = sim1.GetThisPointer(); // sim2 ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ ์ฅ
cout << ptr2 << ", ";
ptr2 -> ShowSimpleData();
return 0;
}
๐ this ํฌ์ธํฐ ํ์ฉ
class TwoNum{
private:
int num1;
int num2;
public:
TwoNum(int num1, int num2){
this -> num1 = num1;
this -> num2 = num2;
}
// ์์ ๋์ผํ ํํ
TwoNum(int num1, int num2) : num1(num1), num2(num2) {}
}
this -> num1์ ๋ฉค๋ฒ๋ณ์ num1์ ์๋ฏธํ๋ค. ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ผ๋ก ์ ๊ทผํ ์ ์๋ ๋์์ ๋ฉค๋ฒ๋ณ์์ด์ง ์ง์ญ๋ณ์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๐ Self-reference ๋ฐํ
class SelfRef{
private:
int num;
public:
SelfRef(int n) : num(n){
cout << "๊ฐ์ฒด์์ฑ" << endl;
}
SelfRef& Adder(int n){
num += n;
return *this;
}
SelfRef& ShowTwoNum(){
cout << num << endl;
return *this;
}
}
int main(void){
SelfRef obj(3);
SelfRef &ref = obj.Adder(2);
obj.ShowTwoNumber();
ref.ShowTwoNumber();
ref.Adder(1).ShowTwoNumber().Adder(2).ShowTwoNumber();
return 0;
}
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์์ (0) | 2024.04.23 |
---|---|
[C++] ๋ณต์ฌ ์์ฑ์ | ๊น์ ๋ณต์ฌ์ ์์ ๋ณต์ฌ (0) | 2024.04.19 |
[C++] ์์ฑ์์ ์๋ฉธ์ (0) | 2024.04.18 |
[C++] ์ ๋ณด ์๋ | ์บก์ํ (0) | 2024.04.17 |
[C++] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2024.04.17 |