void test(int && val)
{
val=4;
}
void main()
{
test(1);
std::cin.ignore();
}
là một int
được tạo ra khi test
được gọi hoặc theo mặc định trong C++ literals là int
loại?đen và rvalue tham khảo
void test(int && val)
{
val=4;
}
void main()
{
test(1);
std::cin.ignore();
}
là một int
được tạo ra khi test
được gọi hoặc theo mặc định trong C++ literals là int
loại?đen và rvalue tham khảo
Lưu ý rằng mã của bạn sẽ biên dịch chỉ bằng trình biên dịch C++ 11.
Khi bạn vượt qua một nghĩa đen không thể thiếu, đó là theo mặc định của int
loại, trừ khi bạn viết 1L
, tạm thời đối tượng loại int
được tạo ra đó là ràng buộc để các tham số của hàm. Nó giống như số trước tiên từ các lần khởi tạo sau:
int && x = 1; //ok. valid in C++11 only.
int & y = 1; //error, both in C++03, and C++11
const int & z = 1; //ok, both in C++03, and C++11
Một int có giá trị 1 được tạo khi kiểm tra được gọi. Literals được gõ theo hình thức của chúng. Ví dụ, 1 là một int, 1.0 là một đôi, "1" là một chuỗi.
'" 1 "' là một 'char const [2]'. –
Đó là một chuỗi. :-) –
Điều đó rất gây hiểu nhầm. Loại '" 1 "' không phải là "chuỗi" và không có loại "chuỗi" cơ bản; nếu có, thì có lẽ '" 1 "' và '" 11 "' sẽ có cùng kiểu nhưng chúng không có. –
Đó có phải là 'kiểm tra (int & val)'? –
Mã không biên dịch ... – Gob00st
trong MSV10 ở chế độ gỡ lỗi ít nhất là biên dịch mã – Guillaume07