2009년 12월 31일 목요일

포인터, 아니 인스턴스 변수 대입했을 때 멤버변수의 값 변화

1. public class Test {
2. public static void main(String args[]) {
3. class Foo {
4. public int i = 3;
5. }
6. Object o = (Object)new Foo();
7. Foo foo = (Foo)o;
8. System.out.println("i = " + foo.i);
9. }
10. }
What is the result?
A. i = 3
B. Compilation fails.
C. A ClassCastException is thrown at line 6.
D. A ClassCastException is thrown at line 7.


Foo를 생성한다. o 포인터에 넣어주고, 참 인스턴스 변수. 아니지 포인터.
o를 캐스팅해서 포인터 foo에 넣어준다. 그러고는 멤버변수 i 를 찍는다.

당근 3이지 ㅡㅡ; Object 는 void 포인터라고 생각하면 된다.


B언어 만든 켄 톰슨, C언어 만든 데니스 리치. 정말 만나고 싶다.
사인이라도 굽신굽신 ^^ 뭐... 알아보지도 못할 가능성이 있으니 그들의 제품에
감사할 따름.

독파모 평가 해부 ⑫ (완결) — 청구서: 방어 가능한 평가는 첫해 2,580만 원이다

마지막 편이다. 열한 편의 비판을 한 장의 설계도로 바꾼다. 우리 회사(그리고 어느 회사든)가 그대로 실행할 수 있는 평가 프로토콜과 그 원화 가격표다. 환율 1,380원/USD, 전부 가정을 명시한 필자 계산이며, 국내 어노테이션 업체들이 문항당 단...