1. 기 ¶
- die . 그. 고 게 . 게 까? .
~cpp
#include <iostream>
using namespace std;
class Foo{
public:
int id;
Foo(){
static idSequance = 0;
id = idSequance++;
cout << "Create! id = " << id << endl;
}
void die(){
cout << "I suicide. Id is " << id << endl;
delete this; //
}
void sayMyId(){
cout << "My Id is no " << id << endl;
}
void sayHello(){
cout << "say Hello" << endl;
}
};
int main(int argc, char** argv)
{
cout << endl << ":::::: Case 1 - " << endl;
Foo* foo1 = new Foo();// Create! .
foo1->sayHello(); // Hello
foo1->sayMyId(); // id
foo1->die(); // 객
foo1->sayHello(); //
foo1->sayMyId(); //
// id
cout << endl << ":::::: Case 2 - id " << endl;
Foo* foo2 = new Foo();// Create! .
foo2->sayHello(); // Hello World
foo2->sayMyId(); // id
foo2->die();
foo2->sayHello();
foo2->sayMyId();
cout << endl << ":::::: Case 3 - NULL 고 기 " << endl;
Foo* foo3 = NULL; // .
foo3->sayHello(); // Hello .
//foo3->sayMyId(); // debug, release .
//foo3->die(); // debug, release .
cout << endl << ":::::: Case3 - " << endl;
Foo foo4;
foo4.sayHello(); // Hello World
foo4.sayMyId(); // id
foo4.die(); // debug mode assertion error
foo4.sayHello(); // release
foo4.sayMyId(); // release
cout << endl;
return 0;
}
결과 과 . 교, 각 고 .~cpp :::::: Case 1 - Create! id = 0 say Hello My Id is no 0 I suicide. Id is 0 say Hello My Id is no 3604872 :::::: Case 2 - id Create! id = 1 say Hello My Id is no 1 I suicide. Id is 1 say Hello My Id is no 3604872 :::::: Case 3 - NULL 고 기 say Hello :::::: Case3 - Create! id = 2 say Hello My Id is no 2 I suicide. Id is 2 say Hello My Id is no 2 Press any key to continue
2.1. Case1 - ¶
~cpp Foo* foo1 = new Foo(); // Create! . foo1->sayHello(); // Hello World foo1->sayMyId(); // id foo1->die(); // . foo1->sayHello(); // ? foo1->sayMyId(); // ..--;
2.2. Case2 - NULL 고 기 ¶
~cpp Foo* foo2 = NULL; // . foo2->sayHello(); // Hello .(--;) foo2->sayMyId(); // debug, release . foo2->die(); // debug, release .
3.1. C++ 과 . ¶
고 . class 고 그 class Data "class " 곳 .
~cpp
class Foo{
public:
int id; // <- .
};
C++ Strong typed language 간 고, . 과 국. ~cpp Foo foo4;new runtime class instance . 그 id int class "class " 곳 .
기까, class struct . 그고, class 각 , 그 foo member .
그, , new 간 type 고 고, . 그고 과 .
그 class instance vpt, 계 pointer . 그 기 각 . 갑
3.2. instance . ¶
계 . member 교. 그고 간 .
C++ 과, instance . 과 고, .
, 깁.
각각 instance 게 근?
각각 instance 게 근?
,
그
~cpp
class Foo{
public:
int id;
void sayMyId(){
cout << "My Id is no " << id << endl;
}
};
각 instance id 근. 그
~cpp Foo::sayMyId() , id 근 . C++ 계 class class 결고 . ,
~cpp Foo:sayMyId()
~cpp Foo:sayMyId(Foo* x)고, . 그고,
~cpp Foo* ~cpp foo1->sayMyId(foo1);.
C++ C OOP 구.
. class static 고 instance instance 근 . static pointer 고 .
경 갑.3.3. 기 . ¶
과 ,
~cpp Foo* foo1 = new Foo(); // Create! . foo1->sayHello(); // Hello foo1->sayMyId(); // id foo1->die(); // 객 foo1->sayHello(); // foo1->sayMyId(); //
게 .( )
게 . (C++ 고) ,
~cpp Create! id = 0 say Hello My Id is no 0 I suicide. Id is 0 say Hello // 객 (delete this) My Id is no 3604872 // 객 (delete this)
~cpp sayHello() sayMyId() 겁. member ~cpp sayHello() -> sayHello(Foo*) sayMyId() -> sayMyId(Foo*)겁. .
sayHello() instance variable 근 고,
~cpp sayMyId() 근 ., (?) 고 instance id 과 게 .
그고
~cpp say Hello 객 (delete this) My Id is no 3604872 객 (delete this)instance , process , 근 금 . delete this instance 값 게 "" , 게 .
그고
~cpp delete xx 값 . . call by value x 값 NULL 경, 경 기 , .
구 , system 고 근 금 , 근 access 겠. 구 겁.
foo2~3 경 결과 .
그 foo2 C++ . (foo3 기)
~cpp Foo* foo2 = NULL; // . foo2->sayHello(); // Hello .결과
~cpp say Hello과 .
~cpp Foo::sayHello(foo2) -> Foo::sayHello(NULL)고, sayHello pointer 값 NULL 근 .
OOP 고 instance , . C++ instance . 겠. NULL 0 pointer 값 까.
5. Java . ¶
instance Java .
( null 값 고, instance pool instance pointer 근 기. )
~cpp
// Main.java file
class Foo{
public int a;
void sayHello(){
System.out.println("Hello");
}
}
public class Main {
public static void main(String[] args) {
Foo foo= null;
foo.sayHello();
}
}
, 과 exception . Java Language Specification 2nd (3rd 군.) jvm specification 고.( null 값 고, instance pool instance pointer 근 기. )
~cpp java.lang.NullPointerException at Main.main(Main.java:19) Exception in thread "main"
C++ NULL 고, 0 고 기 .그 vm 그 null 고 .









