(có thể thay đổi giá trị của nó trong suốt chương trình)
Hay là 'ví dụ của một cái gì đó' liên quan chặt chẽ đến các lớp và các đối tượng? Nếu vậy, bạn sẽ định nghĩa khái niệm 'biến' như thế nào khi nói đến C ++?
(có thể thay đổi giá trị của nó trong suốt chương trình)
Hay là 'ví dụ của một cái gì đó' liên quan chặt chẽ đến các lớp và các đối tượng? Nếu vậy, bạn sẽ định nghĩa khái niệm 'biến' như thế nào khi nói đến C ++?
Câu trả lời:
Theo như tôi biết, nó là đúng với các giá trị gọi của loại nguyên thủy trường hợp của loại hình đó (xem ví dụ "C Loại Hệ thống ++" , từ thủ công Visual Studio, nhưng tôi vẫn đang tìm kiếm một nguồn khác), mặc dù tôi tin rằng thuật ngữ này là Chủ yếu được sử dụng khi thảo luận về các đối tượng. Một đối tượng là một thể hiện của lớp C nếu nó được xây dựng từ một hàm tạo được định nghĩa trong lớp C hoặc một trong các lớp con của nó.
Một biến trong C ++ không phải là một khái niệm thời gian chạy. Nó tồn tại bên trong trình biên dịch của bạn dưới dạng liên kết từ vựng giữa tên của biến và vị trí trừu tượng (có thể thay đổi nếu không phải là const). Khi một chương trình được biên dịch, các biến không còn ở đó nữa. Thay vào đó, dữ liệu được đọc và ghi vào sổ đăng ký, bộ nhớ, v.v.
int
. Tiêu chuẩn C ++ không tạo ra sự khác biệt giữa các loại nguyên thủy và các loại không nguyên thủy khi nói về những gì khai báo biến. Vì vậy, T t;
tuyên bố một đối tượng của loại T
, bất kể loại nào T
xảy ra.
Hay là 'ví dụ của một cái gì đó' liên quan chặt chẽ đến các lớp và các đối tượng? Nếu vậy, bạn sẽ định nghĩa khái niệm 'biến' như thế nào khi nói đến C ++?
Nói một cách chính xác nhất có thể cho C ++
Chỉ để được rõ ràng:
malloc()
bộ đệm mới , nhưng chưa được khởi tạo: đó là vùng nhớ chưa phải là một đối tượng. Tương tự như vậy, một đối tượng đã bị phá hủy rõ ràng: Đó là vùng nhớ không còn là đối tượng nữa.
Chà, "chính xác" nghĩa là gì?
Nếu chúng ta muốn cực kỳ nghiêm ngặt về nó, chúng ta cần phân biệt giữa:
Vì vậy, sau đó một biến số là một biểu thức mà Haiti sẽ có một loại. Giá trị của nó đối với đối tượng mà nó đề cập đến là một thể hiện của một số lớp. Và lưu ý rằng kiểu của biến và lớp của đối tượng nói chung không giống nhau. Kiểu tĩnh của biến đặt giới hạn trên của các lớp thời gian chạy của đối tượng, để các lớp phải là một kiểu con của lớp tương ứng với loại.
Bạn có muốn lặp lại câu nói lớn đó mọi lúc không? Quái gì không. Làm thế nào nghiêm ngặt so với lỏng lẻo chúng tôi muốn nói chuyện phụ thuộc vào bối cảnh. Vì vậy, thường thì thực sự không có vấn đề gì khi nói rằng "biến là một thể hiện của loại này." Điều đang xảy ra ở đó thực sự là chúng ta đang sử dụng biến và kiểu ẩn dụ để chỉ đối tượng và siêu lớp của lớp thời gian chạy của nó.
Trừ khi bạn muốn dành cả đời mình cho sự thuần khiết và ngụy biện ... vâng.
Mỗi khi bạn giữ một thứ gì đó được xác định duy nhất một cách sử dụng để giả mạo những thứ khác có thể nhận dạng duy nhất mà bạn đang thực hiện.
Một số trong những khởi tạo đó có thể có tên chính xác hơn, nhưng nói chung điều này hoạt động.
Nhiều người dành "ví dụ" cho các thể hiện của các lớp. Nếu bạn làm điều đó thì trong C ++, một biến có thể là một thể hiện của một lớp, một tham chiếu đến một thể hiện, một con trỏ tới một thể hiện hoặc một kiểu nguyên thủy (bạn có thể tính các cấu trúc là các lớp trong ngữ cảnh đó, chúng gần như hoàn toàn giống nhau). Trong Java hoặc Objective-C, các biến sẽ không bao giờ là các thể hiện mà có thể là các tham chiếu đến các cá thể.
Quên: Trong một thời gian ngắn, một con trỏ C ++ có thể là một con trỏ tới bộ nhớ thô, ví dụ "this" trước khi hàm tạo bắt đầu thực thi. Bạn có thể không gọi * đây là một ví dụ tại thời điểm này.