class Main { public: int member; }; //#define SAFE int main() { #ifdef SAFE deque<Main> v; #else vector<Main> v; #endif v.push_back( Main() ); #ifdef SAFE deque<Main>::reference r = v.back(); #else vector<Main>::reference r = v.back(); #endif cout << r.member << endl; // ok v.push_back( Main() ); cout << r.member << endl; // invalid read }
@tags: CPlusPlus
Java: FUNCTION ARGS ARE REFERENCES
But make sure that it can be changed : inmutable
public class Arg_copy { public static void f(String arg) { arg ="overide fail"; } // = is actually an allocator
public static void f(String arg[]) { arg[0] = “overide success”;}
public static void main(String[[]] s) { String[] a= {"original"}; f(a[0]); System.out.println(a[0]); // original f(a); System.out.println(a[0]); // sucess } }