MewwSikk
article thumbnail
Published 2023. 10. 7. 16:10
[C++] friend Keyword ๐Ÿ‘พ CS

friend keyword์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ ค ํ•ฉ๋‹ˆ๋‹ค.

 

ํด๋ž˜์Šค ๋ฉค๋ฒ„ ์ค‘์—๋Š” private๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„๋“ค์ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ๋Š” ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค..

 

์ด ๋•Œ ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ํ•ด๋‹น private member๋“ค์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ friend ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋Š” ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

ํ•จ์ˆ˜์˜ return type์•ž์— friend ํ‚ค์›Œ๋“œ ์ž‘์„ฑ

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋„ ํ•จ๊ป˜ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

#include <iostream>

class Information {
public:
    int updateValue(int newValue) {
       int oldValue=value;
       value=newValue;
       return oldValue;
    }
private:
    friend void friendAccess();
    void tempFunction(){}; // private๋กœ ๊ฐ€๋ ค์ง„ tempfunction
    int value;

};

void friendAccess() {
    Information info;
    info.tempFunction();
    info.value=14;
}

int main() {

    return 0;
}

ํ•ด๋‹น ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ํ•จ์ˆ˜์˜ ์™ธ๋ถ€์—์„œ private๋กœ ์„ ์–ธ๋œ tempFunction๊ณผ value๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‹น์—ฐํžˆ ์˜ค๋ฅ˜๋Š” ์•ˆ ๋‚ฉ๋‹ˆ๋‹ค.

 

์ €๋Š” ์—ฌ๊ธฐ์„œ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ๋Š”๋ฐ, friendํ‚ค์›Œ๋“œ๋ฅผ private์•ˆ์—์„œ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ทœ์น™์ด ์žˆ์„๊นŒ? ์˜€์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ public์•ˆ์—์„œ ์ž‘์„ฑํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™๋”๊ตฐ์š”. (์˜ค๋ฅ˜ X)

 

profile

MewwSikk

@Mu Gyum

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!