728x90
1. 1번 클래스 전체 멤버 함수를 프렌드로 선언할 수 있다.
2. 4번 함수 중복은 프렌드 함수를 사용하지 않아도 가능하다.
3.
class Sample {
friend SampleManager;
};
4.
class Sample {
friend bool SampleManager::compare(Sample &a, Sample &b);
};
5. 프렌드 함수로 선언하지 않고 클래스 Student의 private멤버 변수를 사용하면 접근할 수가 없다.
class Student {
int id;
public:
Student(int id) { this->id = id; }
friend bool isValid(Student s);
};
bool isValid(Student s) {
if(s.id > 0) return true;
else return false;
}
6. 프렌드 함수로 선언하지 않고 클래스 Student, Professor의 private멤버 변수를 사용하면 접근할 수가 없다.
class Professor;
class Student {
int id;
public:
Student(int id) { this->id = id; }
friend void show(Student s, Professor p);
};
class Professor {
string name;
public:
Professor(string name) { this->name = name; }
friend void show(Student s, Professor p);
};
void show(Student s, Professor p) {
cout << s.id << p.name;
}
7. 클래스 Person의 멤버 함수를 클래스 Food의 프렌드 함수로 선언하여야 한다.
class Person;
class Food {
int price;
string name;
public:
Food(string name, int price);
void buy();
friend void Person::shopping(Food food);
};
class Person {
int id;
public:
void shopping(Food food) {
if (food.price < 1000)
food.buy();
}
int get() { return id; }
};
8. 4번 클래스 내의 아무 영역에 선언되어도 상관없다.
9. 프렌드 함수의 의미가 없다.
isZero함수는 클래스 Sample의 멤버 함수가 아니므로 호출하는 부분에서 오류가 발생한다.
bool ret = isZero(b);
10. 필요하지 않다. public멤버 변수를 사용하므로 프렌드 선언 없이도 가능하다.
11. 연산자의 중복
12. 맥주 + 콜라 = 맥콜
13. 4번 제한되는 기호가 있다.
14. 4번 정수가 앞으로 오면 외부 함수로 선언하여 프렌드 함수로 선언하여야 한다.
15. 3번 Power& operator += (Power b);
16. 3번 객체 a의 값을 ++해주려면 참조로 값을 받아야 한다.
17. 필요 없다. 복사 생성자로 복사를 하기 때문이다.
728x90
'C++ > 명품 C++ Programming' 카테고리의 다른 글
명품 C++ 8장 연습문제 - 이론 문제 (0) | 2022.02.04 |
---|---|
명품 C++ 7장 연습문제 - 실습 문제 (0) | 2022.01.26 |
명품 C++ 6장 연습문제 - 실습 문제 (0) | 2022.01.13 |
명품 C++ 6장 연습문제 - 이론 문제 (0) | 2022.01.12 |
명품 C++ 5장 연습문제 - 실습 문제 (0) | 2022.01.10 |
댓글