import std.stdio;
class IntegerContainer
{
public int Integer = 1;
}
void DoubleInteger(IntegerContainer Container)
{
Container.Integer *= 2;
}
void main()
{
IntegerContainer Container = new IntegerContainer; // Internal integer defaults to one.
DoubleInteger(Container); // Internal integer changes to two inside the function.
writefln(Container.Integer); // Prints "2."
}
Trong D, tham chiếu và giá trị là đặc điểm của loại, thay vì tham số hàm. Đến từ C++, điều này thật sự rất tệ với tôi.Làm cách nào để chuyển đối tượng theo giá trị?
Có vẻ như có một từ khóa ref
để bắt buộc tham chiếu cho các hàm chấp nhận struct
s. Có tương đương như vậy để chuyển số class
es theo giá trị không?
Ví dụ: giả sử tôi muốn tạo hàm chức năng trả về bản sao được sắp xếp của một lớp chứa tùy chỉnh. Trong C++, điều đó đơn giản như sử dụng Foo Sorted(Foo Object)
, trái ngược với Foo Sort(Foo& Object)
. Tôi thấy không có cách nào để làm điều này trong D mà không cần sao chép thủ công đối tượng.
ngay cả với các đối tượng của lớp học, nó vẫn là giá trị theo từng giá trị, vì đó là tham chiếu bạn đang chuyển, theo giá trị – newacct
@newacct Tôi nghĩ mọi người đều biết ý nghĩa của "giá trị theo giá trị". – Maxpm