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

Trần Hoàn viết 19:22 ngày 01/10/2018

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.

viết 19:11 ngày 01/10/2018

A a; trong C++ thì a là biến chứa object thật nằm trên stack

Lê Vũ Thịnh viết 19:08 ngày 01/10/2018

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?

viết 19:12 ngày 01/10/2018

@_@

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

Bài liên quan
0