입니다.
abstract
으로 멤버 함수를 선언하면 기본 클래스가 구현을 제공 할 수 없지만 모든 파생 클래스가 있어야 함을 의미합니다. 추상 같은 방법을 정의하고과 동일한 단순히 파생 클래스 이foo();
편집 구현해야 함을 의미합니다 C++
virtual void foo() = 0;
에서 다음에 대해서는 편집 질문
b::call()
수없는 액세스 a::test()
. 이런 이유 때문에 private 함수를 호출 할 때 호출 된 클래스의 호출 만 호출됩니다.
객체 지향 프로그래밍
(Wikipieda)에서, 가상 함수 또는 가상 메소드 동작에서 무시 될 수있는 함수 또는 방법은 : 주석 대하여 :
EDIT 같은 서명을 가진 함수로 상속받은 클래스.
당신이 C++에서 지불하는 것을 명시 적으로 말하기 때문에 파생 클래스가 함수를 재정의 할 수 있도록 함수를 가상으로 선언해야합니다. 위의 샘플에서 변수 f
는 Foo::baz()
가상 여부를 의도 한 유형으로 있다면 그것은 중요하지 않을 형 Bar*
또는 Bar
이었다 경우
class Foo{
public:
void baz(){
std::cout << "Foo";
}
};
class Bar : public Foo{
public:
void baz(){
std::cout << "Bar";
}
};
int main(){
Foo* f = new Bar();
f->baz(); //baz is not virtual in Foo, so the output is Foo
}
변경 바즈는 가상
class Foo{
public:
virtual void baz(){
std::cout << "Foo";
}
};
//Same Bar declaration
int main(){
Foo* f = new Bar();
f->baz(); //baz is virtual in Foo, so the output is Bar as it will call the derived function
}
참고가 되실 알려진다 (프로그래머가 명시 적으로 그것을 제공했다)
덕분에, 내가 할 수있는 악화 시켰을 지 몰라도 어떤 가상의 의미를 이해 PHP로 증명할 수 있습니까?PHP에서는 객체를 기본 클래스로 변환 할 수 없으므로 다른 말로하면 PHP에 가상이라는 개념이 없습니까? – user198729
PHP에는 가상이라는 개념이 없습니다. 또는 다른 방법으로는 실제 구현이 런타임에 조회되기 때문에 모든 메소드가 가상입니다. – VolkerK
PHP에서는 가상 개념이 없다고 생각하는 것이 더 낫습니다. 'Foo * f = new Bar();' – user198729