Đáp án đúng:
Câu trả lời là SAI. Các thành viên dữ liệu tĩnh (static data members) có thể được khai báo là private. Khi một thành viên dữ liệu tĩnh được khai báo là private, nó chỉ có thể được truy cập từ bên trong lớp. Điều này có nghĩa là các lớp khác hoặc các hàm bên ngoài lớp không thể truy cập trực tiếp vào thành viên dữ liệu tĩnh private đó. Tuy nhiên, các hàm thành viên công khai (public member functions) của lớp có thể được sử dụng để truy cập và thao tác với thành viên dữ liệu tĩnh private.
Câu hỏi liên quan
1. `int a = 20;`: Khai báo biến `a` kiểu `int` và gán giá trị 20.
2. `int &n = a;`: Khai báo tham chiếu `n` đến biến `a`. `n` và `a` cùng trỏ đến một vùng nhớ. Mọi thay đổi trên `n` sẽ ảnh hưởng đến `a`, và ngược lại.
3. `n = a++;`: Toán tử `a++` là toán tử tăng hậu tố (post-increment). Giá trị của `a` (20) được gán cho `n` trước. Sau đó, `a` tăng lên 21. Vì `n` là tham chiếu của `a`, nên `n` cũng có giá trị 20 ở thời điểm gán. Do `n` và `a` cùng vùng nhớ nên lúc này cả `a` và `n` đều có giá trị là 21.
4. `a = n++;`: Toán tử `n++` (tăng hậu tố) cũng tương tự. Giá trị hiện tại của `n` (21) được gán cho `a` trước. Sau đó, `n` tăng lên 22. Vì `a` và `n` cùng vùng nhớ ban đầu, nên `a` nhận giá trị 21 trước khi `n` tăng lên. Sau khi `n` tăng thì `n` có giá trị 22. Giá trị của `a` là 21 và giá trị của `n` là 22.
5. `cout << a << "," << n << endl;`: In ra giá trị của `a` và `n`. `a` có giá trị là 21, và `n` có giá trị là 22.
Vậy đáp án đúng là C. 21, 22
Nếu như dòng `int &&n = a;` được sửa thành `int &n = a;` thì chương trình có thể biên dịch và chạy. Trong trường hợp đó, `n = a++;` sẽ gán giá trị của `a` cho `n` (tức là 20), sau đó `a` tăng lên 21. Dòng `n = &b;` sẽ gây ra lỗi biên dịch vì `n` là một tham chiếu đến `int`, không phải là một con trỏ đến `int`. Nếu dòng này được bỏ qua, thì `cout << a << "," << n << endl;` sẽ in ra giá trị của `a` (21) và `n` (20).
Tuy nhiên, vì câu hỏi gốc chứa lỗi biên dịch, đáp án chính xác là "compile error".
Khi một hàm không phải là thành viên của một lớp nhưng cần truy cập vào các thành viên private của lớp đó, ta sử dụng từ khóa friend
. Việc khai báo một hàm là friend
cho phép hàm đó truy cập vào tất cả các thành viên của lớp, kể cả các thành viên private và protected.
Các lựa chọn khác không phù hợp vì:
inline
: chỉ là một gợi ý cho trình biên dịch để chèn mã của hàm trực tiếp vào nơi gọi, nhằm tăng hiệu suất.static
: được sử dụng cho các biến hoặc hàm thuộc về lớp chứ không phải là một đối tượng cụ thể của lớp đó.virtual
: được sử dụng trong kế thừa để cho phép ghi đè các hàm trong các lớp con.
Trong C/C++, các kiểu dữ liệu số nguyên (int
) có thể được điều chỉnh bằng các từ khóa signed
hoặc unsigned
để chỉ định xem chúng có thể chứa các giá trị âm hay chỉ các giá trị không âm. Ngoài ra, long
có thể được sử dụng để tăng kích thước của kiểu int
(long int
hoặc long
).
signed a;
: Thiếu kiểu dữ liệu cơ bản (ví dụ:int
,char
).sign double d;
:sign
không phải là một từ khóa hợp lệ. Phải làsigned
. Hơn nữa,signed
không thể áp dụng chodouble
.unsigned int i;
: Đây là một khai báo hợp lệ. Nó khai báo một biến số nguyên không dấu (chỉ chứa các giá trị không âm).longth t;
: Sai chính tả. Phải làlong
và thiếu kiểu dữ liệu cơ bản (ví dụ:int
).
Vậy đáp án đúng là C.
* Phương án A: Sai. Biến toàn cục phải được khai báo bên ngoài *tất cả* các hàm, bao gồm cả `main()`. Nếu nó được khai báo trong một hàm khác ngoài `main()`, nó sẽ là biến cục bộ của hàm đó.
* Phương án B: Đúng. Đây là định nghĩa chính xác của biến toàn cục.
* Phương án C: Gần đúng, nhưng không đầy đủ. Mặc dù biến được khai báo bên ngoài `main()`, nó còn phải nằm ngoài tất cả các hàm khác. Nếu không, nó có thể là biến cục bộ của một hàm khác.
* Phương án D: Sai. Biến được khai báo bên trong `main()` là biến cục bộ của hàm `main()`, không phải biến toàn cục.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.