기본 클래스의 모든 함수를 내 클라이언트에 보이지 않게하려면 파생 클래스를 통해서만 액세스 할 수 있습니다.기본 클래스 함수를 클라이언트에 보이지 않게 만들기
C++에서이를 수행 할 수있는 방법이 있습니까?
감사합니다.
기본 클래스의 모든 함수를 내 클라이언트에 보이지 않게하려면 파생 클래스를 통해서만 액세스 할 수 있습니다.기본 클래스 함수를 클라이언트에 보이지 않게 만들기
C++에서이를 수행 할 수있는 방법이 있습니까?
감사합니다.
는 하나의 클래스에서 f()
기능에 액세스 할 수 있습니다 보호 키워드를
class A{
protected:
void f(){
std::cout << "F" << std::endl;s
}
};
class B:public A{
// access f() here...
};
모든 파생 클래스를 사용
두 개의 방법이 있습니다.
두 번째 방법 : A.의 만들기 B 클래스 친구 클래스
#include <iostream>
class A{
private:
void f(){
std::cout << "F" << std::endl;
}
friend class B;
};
class B:public A{
A obj;
public:
void accessF(){
obj.f();
}
};
int main(){
B obj;
obj.accessF();
return 0;
}
'A'가'friend'를 위해서'B'의 선언을 필요로합니다. – user4581301
@ user4581301 나는 그렇게 생각하지 않는다. 나는 그것을 시험했다. 왜 필요한지 설명해 주시겠습니까? – UnKnown
사과드립니다. 총을 뛰어 넘었 어. 동일한 네임 스페이스 예외입니다. – user4581301
사용 액세스 지정자 (기본 클래스가 당신의 통제를받지 않는 경우) :
class A
{ public:
void f() {}
void h() {}
};
class B: private A // all members of A are private
{ public:
void g()
{ f();
}
using A::h; // adjust access
};
int main()
{ A a;
a.f();
B b;
b.g();
b.h();
b.f(); // error: 'void A::f()' is inaccessible
}
당신이 잘 알고있는 보호 된 키워드? – UnKnown
'보호됨'으로 설정합니다. 'client'는 기본 클래스의 객체를 의미합니까? – sameerkn
불분명 함. "보이지 않는"및 "고객"은 무엇을 의미합니까? – user4581301