결과적으로 자바는 call by value입니다. C/C++과 같이 주소값을 직접 사용하는 것이 아닌, 복사해서 사용합니다.


반면, C/C++은 call by reference로 값을 전달할 경우 주소 자체가 전달됩니다.


C++
#include 
using namespace std;

class Student{
public:
    int age;
public:
    Student(int age) : age(age){
    }
     ~Student(){
    }
};

void change(Student &st){
    st = Student(50);
}

int main(){
    Student st(14);
    cout << st.age << endl;
    change(st);
    cout << st.age << endl;
    return 0;
}


출력>>

14

50


JAVA


class Student{
    int age;
    Student(int age){
     this.age=age;
 }
}

public class Test {
 public static void change(Student user) {
     user = new Student(50);
 }

 public static void main(String[] args) {
     Student st = new Student(14);
     System.out.println(st.age);
     change(st);
     System.out.println(st.age);
 }
}


출력>>

14

14


http://www.m2sj.info/entry/%EC%9E%90%EB%B0%94-%EC%9E%90%EB%B0%94%EB%8A%94-%ED%95%AD%EC%83%81-Call-By-Value-%EC%9D%B4%EB%8B%A4


http://gall.dcinside.com/board/view/?id=programming&no=891104&page=3&search_pos=&s_type=search_all&s_keyword=si

+ Recent posts