본문 바로가기
C++/명품 C++ Programming

[C++/명품 C++ Programming]명품 C++ 7장 연습문제 - 이론 문제

by starfish22 2022. 1. 24.
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

댓글