[C++] ํด๋ž˜์Šค์™€ ๋ฐฐ์—ด, this ํฌ์ธํ„ฐ

2024. 4. 18. 20:06ยท ๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๐ŸŽ  C++

๐ŸŸฉ ๊ฐ์ฒด ๋ฐฐ์—ด

๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด

๋”ฐ๋ผ์„œ, ๋ฐฐ์—ด ์ƒ์„ฑ์‹œ ๊ฐ์ฒด๊ฐ€ ํ•จ๊ป˜ ์ƒ์„ฑ๋œ๋‹ค.

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
'๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๐ŸŽ  C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C++] ์ƒ์†
  • [C++] ๋ณต์‚ฌ ์ƒ์„ฑ์ž | ๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ
  • [C++] ์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž
  • [C++] ์ •๋ณด ์€๋‹‰ | ์บก์Аํ™”
peewoong
peewoong
peewoong
peewoong.log
peewoong
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐Ÿ™‚ Info
    • ๐ŸŽฎ ๊ฒŒ์ž„ ๊ด€๋ จ ๊ฐœ๋…
    • ๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ๐ŸŽญ C
      • ๐ŸŽ  C++
      • ๐Ÿ• C#
      • โœจ ์ž๋ฃŒ๊ตฌ์กฐ
      • ๐ŸŽ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • ๐Ÿ”ข ์ˆ˜ํ•™
      • ๐ŸŽจ ๊ทธ๋ž˜ํ”ฝ์Šค
    • โš™๏ธ ์—”์ง„
      • ๐Ÿง€ VS
      • ๐Ÿค ์œ ๋‹ˆํ‹ฐ
      • ๐Ÿซ ์–ธ๋ฆฌ์–ผ
      • ๐Ÿน DirectX
      • ๐Ÿฆฅ error
    • ๐Ÿ“ฝ๏ธ ํ”„๋กœ์ ํŠธ
    • ๐Ÿง ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
peewoong
[C++] ํด๋ž˜์Šค์™€ ๋ฐฐ์—ด, this ํฌ์ธํ„ฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.