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언어 만든 데니스 리치. 정말 만나고 싶다.
사인이라도 굽신굽신 ^^ 뭐... 알아보지도 못할 가능성이 있으니 그들의 제품에
감사할 따름.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

대학원생의 투고 지도 ④ (완결) — 논문의 수준이란 무엇인가: 사다리와 사분위, 첫 논문 전략

완결편이다. "논문 수준"이라는 말을 해부하고, 에듀테크 석사생의 첫 논문 전략으로 마친다. 학위논문과 학술지 논문은 다른 장르다 먼저 가장 흔한 혼동부터. 학위논문(thesis)은 "내가 연구를 수행할 줄 안다...