Điều tôi nghĩ là loại động đó có nghĩa là đối tượng được phân bổ động bằng cách sử dụng new
. Trong trường hợp sau, bạn có nói p
trỏ đến loại động hoặc loại đối tượng tĩnh không? Trong tiêu chuẩn, nó không nói về loại động là đối tượng năng động.Loại động của đối tượng
1.3.3 - Loại đối tượng có nguồn gốc nhiều nhất (1.8) mà từ đó ký hiệu được biểu thị bằng biểu thức giá trị. [Ví dụ: nếu con trỏ (8.3.1) p có loại tĩnh là "con trỏ đến lớp B" trỏ đến đối tượng thuộc lớp D, bắt nguồn từ B (khoản 10), loại động của biểu thức * p là "D." Tài liệu tham khảo (8.3.2) được xử lý tương tự. ]
Ngoài ra những gì nó báo giá sau có nghĩa
Loại động của một biểu thức rvalue là loại tĩnh của nó
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}
+1 Rõ ràng, súc tích, ví dụ hay. – Lou
+1, nhưng tôi nghĩ bạn có thể làm ví dụ rõ ràng hơn bằng cách thêm ví dụ không sử dụng mới. –
Sẽ không 'A & k = B();' đủ? – arne