01/10/2018, 17:07
Tham chiếu trong java vs C++
Mình muốn hỏi 1 object được khai báo trong C++ có phải là 1 biến tham chiếu như java không?
ví dụ: trong C++:
class A{};
A a;
còn trong java:
public class A{}
A a=new A();
Bên lề 1 chút nhưng mình thấy tham chiếu trong java không được rạch ròi như trong C++.
Bài liên quan
Mình thấy bên Java rạch ròi hơn chứ nhỉ. Vì nó là OOP thuần tuý nên cái gì cũng phải OOP.
Bản chất của thao tác là với đối tượng, không phải là với tham chiếu.
Khí bạn gán
A a = new A();
thìa
là tham chiếu,new A()
là đối tượng.Đôi khi bạn không cần tiếp tục tham chiếu đến một đối tượng sau khi thực hiện 1 phép tính với đối tượng đó, thì bạn có thể truyền trực tiếp đối tượng thay vì truyền tham chiếu:
thay vì
Có thể thấy, trong C++, cách khởi tạo thông thường buộc bạn phải có một tham chiếu cho đối tượng, còn trong Java thì khởi tạo không bắt buộc phải tham chiếu.
A a;
trong C++ thìa
là biến chứa object thật nằm trên stackVậy tức là lúc khởi tạo stack sẽ dành bộ nhớ cho các data members của
a
đúng không bạn?ừ @_@
tham chiếu trong C++ khác với tham chiếu trong Java. Trong Java tham chiếu có thể gán
null
được, và có thể thay đổi được, nên nó giống với con trỏ trong C++ hơn, còn tham chiếu trong C++ cần phải có object thật