c++:
class A
{
public :
int a;
int b;
A(int a,int b):a(a),b(b){}
void change(A& b)
{
int temp = b.a;
b.a = b.b;
b.b = temp;
}
};
A * a = new A(2,4);
(*a).change(*a);
A * const ab= new A(2,4);//ab 指针变量不可以变,但是ab指向的内容是可以修改的
(*ab).change(*ab); //可以修改变量指向的对象的内容
//ab = a; // 不能修改const修饰的变量
java:
class A{
public int a;
public int b;
public A(int a,int b){
this.a =a;
this.b = b;
}
public void change(A a){
int temp = a.a;
a.a = a.b;
a.b = temp;
}
}
A b = new A(4,2);
b.change(b);
final A a = new A( 1,2); //这里final修饰的是变量 a不可以变,但是a只想的对象是可以修改
a.change(a);//可以修改变量指向的对象的内容
//a =b ; // 不能修改final修饰的变量
1.两中语言对比不难看出,java中使用的变量,其实C++就是*p(p是指针变量)
2.使用对象作为参数传递的时候,java只取了C++的的引用传递,即使可以直接修改传递对象的内容
3.final修饰只取了C++ const修饰的变量不可以的原则