Tôi chưa bao giờ gặp phải điều này trước đây trong C++ nhưng thật kỳ lạ khi nó vẫn biên dịch nhưng không làm những gì tôi mong đợi. Ai đó có thể cho tôi biết nó làm gì không? Vui lòng xem mã, biết thêm thông tin sau.Lập tức một lớp bằng C++: Lỗi cú pháp lạ
#include <iostream>
using namespace std;
class Test{
public:
Test();
};
Test::Test(){ cout << "ctor" << endl; }
int main(void){
Test t(); // this compiles but doesn't call the constructor
return(0);
}
Nó sẽ biên dịch, nhưng nếu tôi cố gắng sử dụng "t" thì không. Tôi chỉ phụ thuộc vào chức năng của hàm tạo và mã của tôi không hoạt động như mong đợi. Giải pháp là để mất dấu ngoặc đơn "Test t();" để "Kiểm tra t;". Câu hỏi của tôi là những gì đang xảy ra trong "Test t();" Ví dụ, và trình biên dịch nghĩ gì đang xảy ra mà nó cho phép nó biên dịch.
Tra cứu phân tích cú pháp gây nhiều tranh cãi nhất. – chris
Chào mừng bạn đến với Rite of Passage. –
Câu hỏi là ... trình biên dịch có biết bạn đang mong đợi điều gì không? :) – Carl