Friendλ private ν΄λμ€ λ©€λ²μ μ κ·ΌκΆνμ΄ μλ ν¨μ λλ ν΄λμ€μ λλ€.
μ¬κΈ°μ ν΄λΉ ν¨μ λλ ν΄λμ€λ μ κ·Όνκ³ μ νλ ν΄λμ€μ λ©€λ²κ° μλλλ€.
(μ κ·Όνκ³ μ νλ ν΄λμ€μ μμ± λλ λ©μλκ° μλλλ€.)
ν¨μμ κ²½μ°,
μΌλ°μ μΈ ν¨μ μΌ μλ μκ³ , νΉμ λ€λ₯Έ ν΄λμ€μ λ©€λ² λ©μλμΌ μ μμ΅λλ€.
ν΄λμ€μΌ κ²½μ°,
μ κ·Όνκ³ μ νλ ν΄λμ€μ λͺ¨λ private λ©€λ²λ€μ λν μ κ·Ό κΆνμ΄ μλ ν΄λμ€μ λλ€.
νλ§λλ‘,
friendλ ν΄λμ€μ λͺ¨λ λ°μ΄ν°μ μ κ·Ό κΆνμ κ°μ§, ν΄λμ€ λ©€λ²κ° μλ μΈλΆ ν¨μ λλ ν΄λμ€μ λλ€.
friend κ΄κ³λ friend ν€μλλ₯Ό μ¬μ©ν΄μ ν¨μ λλ ν΄λμ€μ μ μλ₯Ό ν λ λͺ μν΄μΌ ν©λλ€.
λν, friend κ΄κ³λ μλ°©ν₯μ±μ΄ μμ΅λλ€.
Aκ° Bμ friendλΌκ³ ν΄μ (Aκ° Bμ κ°λ€μ μ κ·Όν μ μλ€κ³ ν΄μ)
무쑰건 B λν Aμ friendλ μλλλ€ (Bλ Aμ κ°μ μ κ·Ό κΆνμ΄ μμ μ μμ΅λλ€.)
λ§μ§λ§μΌλ‘, friend κ΄κ³λ μ°μμ±μ΄ μμ΅λλ€.
Aκ° Bμ friendμ΄κ³ , Bκ° Cμ friendλΌκ³ ν΄μ Aκ° Cμ friendλ μλλλ€.
syntaxλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
class Player{
friend void display_player_1 (Player &p);
friend void Other_Class::display_player_2 (Player &p);
friend class Another_Class;
std::string name;
int health;
int xp;
public:
...
};
class Other_Class{
...
public:
void display_player_2 (Player &p) {
std::cout << p.name << std::endl;
std::cout << p.health << std::endl;
std::cout << p.xp << std::endl;
}
};
class Another_Class{
...
};
void display_player_1 (Player &p) {
...
}
μ΄ 3κ°μ§μ friend keyword μ¬μ© λ°©λ²μ΄ μμ΅λλ€.
첫λ²μ¨°λ λ€λ₯Έ ν΄λμ€μ λ©€λ² λ©μλμκ² friendλ₯Ό λΆμ¬νλ κ²μ΄κ³ ,
λλ²μ§Έλ μΌλ° ν¨μμκ² λΆμ¬νλ κ²μ΄κ³ ,
μΈλ²μ§Έλ λ€λ₯Έ ν΄λμ€ μ체μκ² κΆνμ λΆμ¬νλ κ² μ λλ€.
μ΄λ κ² νλ©΄ λΆμ¬λ°λ ν¨μ, λ©μλ, νΉμ ν΄λμ€(=ν΄λμ€ λ΄μ λͺ¨λ λ©€λ²)λ€μ΄
μλ³Έ ν΄λμ€μ private κ°λ€μ λν΄μ μ κ·Ό κΆνμ λ°μ΅λλ€.
'C++ > κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (OOP)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++] μ€νν± ν΄λμ€ λ©€λ² | Static Class Members (0) | 2024.01.02 |
---|---|
[C++] μμ ν΄λμ€ | Using const with Classes (0) | 2024.01.02 |
[C++] this keyword | this ν¬μΈν° (0) | 2024.01.02 |
[C++] Move Constructor | μ΄λ μμ±μ (1) | 2024.01.02 |
[C++] Shallow Copying & Deep Copying | μμ λ³΅μ¬ & κΉμ λ³΅μ¬ (1) | 2023.12.29 |