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

댓글 없음:

댓글 쓰기

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

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...