Vì vậy, tôi có mã này:Khởi tạo thông số không const với chuỗi chữ
class ConstTest {
public:
explicit ConstTest(char* name) {}
};
int main() {
ConstTest t("blarghgh");
}
Nó rõ ràng compiles, mặc dù tôi nghĩ rằng nó không nên. Vì các chuỗi ký tự trong C++ có loại const char[]
và một hàm tạo ConstTest
yêu cầu một số ít hơn char*
- không phải const char*
. Và đúc một con trỏ const
đến một cái không phải là const không phải là một cái gì đó thường được thực hiện bởi C++ ngầm.
Vì vậy, tôi đã sai ở đâu? Tại sao nó biên dịch? Tôi có thể sửa đổi một cách hợp pháp con trỏ dereferenced bên trong constructor?
Related: http://stackoverflow.com/questions/10268705/c-why-is-it-possible-to-assign-a-const-char-to-a-char – ulidtko