컴파일 된 코드는 기본이지만 모든 객체 및 메시지 처리 (조회, 호출 등)를 수행하는 추가 라이브러리 (런타임)가 필요합니다. 관련된 가상 머신이 없습니다. 따라서 Java 런타임보다 QT에 가깝습니다.
[업데이트]를 C++ 메시지 바인딩 행동 이후
는보다 동적 객체 지향 언어의 프로그래머 명확하지 않다 (예 : 목표 - C 또는 스몰 토크) - 나 같은 - 나는 작은 C++ 테스트 응용 프로그램을 작성하는 호출 방법 선택시 virtual
키워드의 효과를 보여줍니다.
#include <iostream>
class Test1 {
public:
Test1();
void test1();
void test2();
};
class Test2 : Test1 {
public:
Test2();
void test1();
void test2();
};
Test1::Test1() {}
void Test1::test1() { std::cout << "T1:t1" << std::endl; }
void Test1::test2() { std::cout << "T1:t2" << std::endl; }
Test2::Test2() {}
void Test2::test1() { std::cout << "T2:t1" << std::endl; }
void Test2::test2() { std::cout << "T2:t2" << std::endl; }
int main(int argc, char **argv)
{
Test1 *t11 = new Test1();
Test1 *t12 = (Test1 *)(new Test2());
Test2 *t2 = new Test2();
t11->test1();
t11->test2();
t12->test1();
t12->test2();
t2->test1();
t2->test2();
return 0;
}
오브젝티브 C 프로그래머는 사람
t12
T1:t1
T1:t2
T2:t1
T2:t2
T2:t1
T2:t2
의 출력은 실제로 Test1
에 주조 된 Test2
인 기대. C는 ++ (virtual
없이, 즉 기본적으로) 정적으로 (인해 주조로) Test1
인 컴파일시 알고 유형에 따라 test1
호출 결합 때문에 실제 출력
T1:t1
T1:t2
T1:t1
T2:t2
T2:t1
T2:t2
이다.
[동의율] (http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work)에서 작업 해보십시오. –