클래스는 상속 및 구성에 관한 것입니다. 최소 권한 원칙과 관련된 const
키워드를 사용하고 있습니까?최소 권한 및 const 키워드의 원칙
나는 상속과 구성을 이해하고 있으며 그것을 이해하지만 최저 특권의 원칙은 무엇인가? 누구든지 내게 그것을 설명 할 수 있고 최소한의 권한을 가진 원칙을 포함하도록 코드를 수정하는 방법은 있습니까?
class A {
int i;
public:
A(int ii) : i(ii) {}
~A() {}
void f() const {}
};
class B {
int i;
public:
B(int ii) : i(ii) {}
~B() {}
void f() const {}
};
class C : public B {
A a;
public:
C(int ii) : B(ii), a(ii) {}
~C() {} // Calls ~A() and ~B()
void f() const { // Redefinition
a.f();
B::f();
}
};
int main() {
C c(47);
} ///:~
Const는 conext에 기반한 부작용이있는 기능을 허용하지 않기 위해 사용할 수있는 최소 권한의 주체와 관련이 있거나 기능에 부작용이 없다는 약속을 제공합니다. 그게 당신의 코드와 관련이 있습니다. 나는 모른다 ... f는 재정의가 아니라 메소드 숨기기입니다. – IdeaHat
// Calls ~ A() 주석이 잘못되었습니다. 귀하의 A 인터페이스에서 가상의 아무것도, 그래서 당신이 그러한 개체에 A * 포인터를 잡고 있다면 B 또는 C의 어떤 방법을 호출하지 않을거야. – xryl669