Loại C++ nào có thể được khởi tạo?Điều gì có thể được khởi tạo?
Tôi biết rằng sau mỗi trực tiếp tạo ra một trường hợp duy nhất của Foo
:
Foo bar;
Foo *bizz = new Foo();
Tuy nhiên, những gì về với built-in loại? Có phải sau đây tạo ra hai trường hợp của int
, hoặc là ví dụ từ sai để sử dụng và bộ nhớ chỉ được phân bổ?
int bar2;
int *bizz2 = new int;
Còn con trỏ thì sao? Ví dụ trên có tạo ra một cá thể int *
hoặc chỉ cấp phát bộ nhớ cho một int *
không?
Có sử dụng các literals như 42
hoặc 3.14
cũng tạo một cá thể không?
Tôi đã nhìn thấy đối số rằng nếu bạn không thể phân loại một loại, nó không phải là một lớp, và nếu nó không phải là một lớp, nó không thể được khởi tạo. Điều này có đúng không?
Rất hay. Cảm ơn. =] – strager
Đây có lẽ là câu trả lời hay nhất cho đến nay. Sự khác biệt giữa tiêu chuẩn C++ và thuật ngữ OOP chung rất thú vị. Hầu hết các lập trình viên OOP có lẽ sẽ không gọi một cái gì đó giống như 'int x' một thể hiện của một' int', cũng không phải họ có thể tham chiếu đến một 'int' như một đối tượng; nhưng dù sao nó cũng đúng về mặt kỹ thuật để chỉ nó như vậy. –
Có, "trường hợp" được trích dẫn bởi Pavel không được sử dụng ở tất cả trong ý nghĩa OOP thông thường, vì nó nói "trường hợp của một đối tượng", không phải "trường hợp của một loại". Tôi nghĩ rằng nó có thể được thay thế bằng "một đối tượng khác với ..." và có nghĩa là điều tương tự. Tôi suy đoán hầu hết các lập trình viên OOP sẽ không tham chiếu đến một int như một đối tượng bởi vì chúng được huấn luyện trên Java, nơi mà thực sự một 'int' không phải là một' Object'. Các ngôn ngữ OOP purer không tạo ngoại lệ cho các kiểu dựng sẵn, do đó các số nguyên của chúng là các đối tượng. Trong Ruby, bạn có thể tự động cập nhật các phương thức monkey-class cho lớp đại diện cho chúng, để làm cho '3.minutes' bằng 180. –