, , , , ?
- B::start():
class C: public A, private B {
public:
void start() override { B::start(); }
};
? , start() C A::start().
, C (A::start() B::start()) -. class C, start() start() , using ...::start(), - namelookup C.
class A {
public:
virtual void start() { std::cout << "From A\n"; }
};
class B {
public:
void start() { std::cout << "From B\n"; }
};
class C: public A, private B {
};
int main(){
A* a = new C();
a->start();
C* c = new C();
c->start();
}
, , :
C* c = new C();
c->A::start();
using B::start() class C start() B::start(), C
class A {
public:
virtual void start() { std::cout << "From A\n"; }
};
class B {
public:
void start() { std::cout << "From B\n"; }
};
class C: public A, private B {
public:
using B::start();
};
int main(){
A* a = new C();
a->start();
C* c = new C();
c->start();
}
using B::start void B::start() C, . -, B::start(), - C B::start()
class A {
public:
virtual void start() { std::cout << "From A\n"; }
};
class B {
public:
void start() { std::cout << "From B\n"; }
};
class C: public A, private B {
public:
void start() override { B::start(); }
};
int main(){
A* a = new C();
a->start();
C* c = new C();
c->start();
}