-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
접근지정자와 상속
23.10.07 19:48 작성 조회수 78
1
#include <iostream>
#include <cstdio>
using namespace std;
class Parent
{
public:
Parent() {
this->parent_pri = 2;
}
virtual void pri_print() {
printf("%d", parent_pri);
}
private:
int parent_pri;
};
class Public_Child : public Parent{};
int main() {
Public_Child public_child;
public_child.pri_print();
}
이거를 실행하면 비쥬얼 스튜디오에서 2가 출력이 되는데, 클래스 밖의 main 함수에서 public_child.pri_print()에 접근할 수 있는 이유가 public 이기 때문이고, 그 public안의 pri_print함수는 클래스 Parent의 멤버 함수이기 때문에 private로 지정되어 있는 parent_pri에 접근할 수 있기 때문인가요?
답변을 작성해보세요.
1
Soobak
2023.10.07
안녕하세요, 답변 도우미 Soobak 입니다.
Public_Child
클래스는Parent
클래스를public
으로 상속받고 있습니다.
따라서,Parent
클래스의public
멤버들은Public_Child
클래스에서도public
으로 접근이 가능합니다. 그렇기 때문에main()
함수에서public_child.pri_print()
를 호출할 수 있는 것입니다.
pri_print()
함수는Parent
클래스의 멤버함수입니다.
클래스의 멤버함수는 해당 클래스의private
멤버변수에 직접 접근할 수 있습니다.
따라서,pri_print()
함수는parent_pri
변수에 접근하고 그 값을 출력할 수 있습니다.
요약하자면, main()
함수에서 public_child.pri_print()
를 호출하는 것은 Public_Chlid
가 Parent
클래스를 public
으로 상속받기 때문에 가능하며, pri_print()
함수가 private
멤버변수 parent_pri
에 접근하는 것은 멤버함수가 자신의 클래스의 private
멤버에 접근할 수 있기 때문입니다.
답변 1