다라다라V
article thumbnail
728x90
반응형
본 글은 "황기태"님의 [명품 C++ Programming]의 연습 문제 답을 공유하고자 작성되었으며, 필자가 직접 문제를 풀며 작성한 것이기에 오류가 있을 수 있습니다. 댓글로 알려주시면 반영하도록 하겠습니다.

시리즈 보기
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 3장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 5장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 6장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 7장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 13장 연습 문제 풀이 (이론 문제)

 

💡 

[정답]

 

💡 

[정답]

 

💡 

[정답] 

class Sample {
	friend SampleManager;
}

 

💡 

[정답] 

class Sample {
	friend bool SampleManager::compare(Sample &a, Sample &b);
}

 

💡 

[정답] 

bool insValid(Student s) {
    if(s.id > 0) return true; // 오류 발생
    else return flase;
}

isValid() 함수에서 Student의 private 멤버에 접근하기 때문에 부적절한 접근이 되어 오류가 발생합니다. 적절한 접근이 되기 위해서는 isValid() 함수를 friend 함수로 작성해야합니다.

class Student {
    int id;
public:
    Student(int id) { this->id = id; }
    friend bool isValid(Student s); // 프렌드 선언
}

 

💡

[정답]

void show(Student s, Professor p) {
    cout << s.id << p.name;
}

show() 함수에서 Student와 Professor의 private 멤버에 접근하므로 컴파일 오류가 발생합니다. 적절한 접근이 되기 위해서는 show() 함수를 friend 함수로 작성해야합니다.

Class Student {
    int id;
public:
    Student(int id) { this->id = id; }
    friend void show(Student s, Professor p);
}
Class Professor {
    int 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;
}

 

💡 

[정답]

shopping() 함수 내에서 Food 클래스의 private 멤버인 price에 접근하여 컴파일 오류가 발생합니다. 마찬가지로 friend 함수로 선언해야합니다.

class Food {
    int price;
    string name;
public:
    Food(string name, int price);
    void buy();
    friend void Person::shopping(Food food); // friend
};

class Person {
    itn id;
public:
    void shopping(Food food);
    int get() {return id;}
};

void Person::shopping(Food food) {
    if (food.price < 1000)
        food.buy();
}

 

💡 

[정답]

 

💡

[정답]

 

💡

[정답]

friend 함수 선언이 필요하지 않습니다. isZero는 Sample 클래스의 public 멤버인 x에 접근합니다. private 멤버에 접근하는 것이 아니므로 friend 함수로 선언할 필요는 없습니다.

 

💡 

[정답] 연산자 중복

 

💡

[정답]

치킨 + 양념 = 양념치킨

 

💡 

[정답]

 

💡 

[정답]

 

💡 

[정답]

 

💡 

[정답]

 

💡 

[정답]

치환 연산자를 작성할 필요가 없습니다. Circle 클래스의 경우 포인터를 가진 멤버가 없어 두 객체가 비트 단위로 복사되는 객체 기본 치환 연산을 해도 문제가 발생하지 않습니다.

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!