Tôi hiểu rằng có các nền tảng HW nơi bạn cần thêm thông tin để trỏ đến một số char
hơn là bạn cần trỏ đến một số int
(nền tảng có byte không thể định địa chỉ), để trỏ đến số char
. một chỉ số của một byte trong từ). Vì vậy, có thể là sizeof(int*) < sizeof(char*)
trên các nền tảng như vậy.Có thể kích thước con trỏ cho các lớp phi công đoàn khác nhau không?
Điều gì đó tương tự có thể xảy ra với con trỏ đến các lớp không công đoàn? C++ cho phép biến đổi trả về các kiểu trên các hàm ảo. Hãy nói rằng chúng tôi có các lớp học như thế này:
struct Gadget
{
// some content
};
struct Widget
{
virtual Gadget* getGadget();
};
Bất kỳ mã trong đó kêu gọi getGadget()
phải làm việc khi nhận được một Gadget*
, nhưng cùng mã (trên thực tế cùng biên soạn nhị phân code) phải làm việc khi nó nhận được một con trỏ đến một loại có nguồn gốc từ Gadget
là tốt (có lẽ một loại được định nghĩa trong một thư viện hoàn toàn khác). Cách duy nhất tôi có thể thấy điều này xảy ra một cách hợp lý là sizeof(T*) == sizeof(U*)
đối với tất cả các loại nhóm phi công đoàn T
và U
. Vì vậy, câu hỏi của tôi là, được đưa ra trình biên dịch thực tế (không bao gồm Hell ++ giả định) trên một nền tảng cụ thể, có hợp lý để mong đợi rằng tất cả các con trỏ tới các loại lớp không phải là công đoàn sẽ có cùng kích thước không? Không. Hoặc có thực tế lý do tại sao một trình biên dịch có thể muốn sử dụng các kích thước khác nhau trong khi vẫn tuân thủ các loại trả về biến đổi không?
Trên các nền tảng có "con trỏ" khác nhau tồn tại (chẳng hạn như __near
và __far
), giả sử thuộc tính tương tự được áp dụng cho cả hai.
Lưu ý phụ: Có rất nhiều ví dụ trong thế giới được nhúng nơi con trỏ dữ liệu và con trỏ mã có các kích thước khác nhau. – Lindydancer
@Lindydancer Tất nhiên. Nhưng tôi chỉ hỏi một cách rõ ràng về các con trỏ dữ liệu và chỉ về một tập hợp con của chúng ở đó. – Angew
@Casey 'language-lawyer' đã được thêm và xóa một lần. Bạn có chắc nó có thể áp dụng không? Sau khi tất cả, tôi hỏi về thực hiện thực tế, không phải về một giả thuyết mà sẽ làm theo các lá thư của tiêu chuẩn trong khi làm những điều hoàn toàn ngu ngốc trong thực tế. – Angew