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++.

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:

B = doSomethingWith (new A());

thay vì

A a = new A();
B = doSomethingWith(a);

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 stack

2 Likes

Vậ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

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?