Nein, das ist nicht gleich in C++ und Java.
Code:
#include <iostream>
#include <string>
using namespace std;
class Blah {
string x;
public:
void blah (string);
string getX() { return x; }
};
void Blah::blah(string a) {
x = a;
}
void swap(Blah &b1, Blah &b2) {
Blah tmp = b1;
b1 = b2;
b2 = tmp;
}
int main() {
Blah foo;
Blah bar;
foo.blah("foo");
bar.blah("bar");
swap(foo, bar);
cout << "foo.x: " << foo.getX();
cout << "bar.x: " << bar.getX();
return 0;
}
Code:
public class Blah {
String x = null;
Blah() {
}
void setX(String a) {
x = a;
}
/**
* @param args
*/
public static void main(String[] args) {
Blah bar = new Blah();
bar.setX("bar");
Blah foo = new Blah();
foo.setX("foo");
swap(bar, foo);
System.out.println("bar: "+ bar.x);
System.out.println("foo: " +foo.x);
}
public static void swap(Blah b1, Blah b2) {
Blah tmp = b1;
b1 = b2;
b2 = tmp;
}
}
C++: Variable foo zeigt auf das alte Objekt "bar", Variable bar auf das alte Objekt "foo" nach dem Austausch
Java: Die Variablen (Referenzen) foo und bar zeigen auf die ursprünglichen Objekte, beim swappen werden nur die kopierten Referenzen (lokal in der swap-Funktion) geändert.
Lesezeichen