Trong C++, nó không được phép gán một con trỏ void * cho bất kỳ con trỏ không tách rời nào mà không có một diễn viên rõ ràng. Điều này đòi hỏi việc sử dụng một static_cast.Tại sao toán tử mới được phép trả về * void cho mọi kiểu con trỏ?
Nhưng những gì là với điều này:
int* iptr = new int;
Tôi biết rằng điều hành mới được định nghĩa như sau:
void* operator new(size_t);
như thế nào C++ xử lý này? Tôi biết rằng đây là một câu hỏi cơ bản, nhưng quan trọng. Tôi cũng biết rằng mã cấp thấp phải sử dụng void. Nhưng cách phân công này có thể hợp pháp như thế nào? iptr là một con trỏ tới một int và new trả về một con trỏ để làm mất hiệu lực, sẽ kích hoạt một thông báo như "error: invalid conversion from 'void *' thành 'int *' [-fpermissive]".
Vui lòng đọc: http://stackoverflow.com/questions/2697892/what-is-return-type-of-new-in-c; toán tử biểu thức mới và mới không giống nhau. – Mat
Ngoài ra, điều này: http://stackoverflow.com/questions/2941888/how-operator-new-calls-the-constructor-of-class - Tôi tin rằng cả hai câu trả lời cho câu hỏi của bạn. – Mat
Ngoài ra: cảm ơn bạn Mat! – Peter