225 câu trắc nghiệm Lập trình hướng đối tượng
tracnghiem.net chia sẻ hơn 220+ câu trắc nghiệm môn Lập trình hướng đối tượng có đáp án dành cho các bạn sinh viên chuyên ngành có thêm tư liệu học tập, ôn tập chuẩn bị cho kì thi kết thúc học phần sắp diễn ra. Để việc ôn tập trở nên hiệu quả hơn, các bạn có thể ôn theo từng phần trong bộ câu hỏi này bằng cách trả lời lần lượt các câu hỏi cũng như so sánh đáp và lời giải chi tiết được đưa ra. Sau đó các bạn hãy chọn tạo ra đề ngẫu nhiên để kiểm tra lại kiến thức mình đã ôn tập được nhé!
Chọn hình thức trắc nghiệm (20 câu/20 phút)
Chọn phần
-
Câu 1:
Hãy xem xét đoạn mã sau:
class A
{
int a,b;
public:
float F1,F2;};
class B:public A
{
}Hỏi: B sử dụng Được các biến thành viên nào của A
A. a, b, F1, F2
B. F1, F2
C. a, b
D. Không sử dụng được biến thành viên nào
-
Câu 2:
Hãy xem xét đoạn mã sau:
class A
{
protected;
int a,b;
public:
float F1,F2;};
class B:public A
{
}Hỏi: B sử dụng được các biến thành viên nào của A
A. a, b, F1, F2
B. F1, F2
C. a, b
D. Không sử dụng được biến thành viên nào
-
Câu 3:
Hãy xem xét đoạn mã sau:
class A
{
int a,b;
float F1,F2;};
class B:public A
{
}Hỏi: B sử dụng được các biến thành viên nào của A
A. a, b, F1, F2
B. a, b
C. F1, F2
D. a, b, F1, F2
-
Câu 4:
Hãy xem xét đoạn mã sau:
class A
{
char x,y
protected:
int a,b;
public:
float F1,F2;};
class B:public A
{
}"
Hỏi: B sử dụng được các biến thành viên nào của A
A. a, b, F1, F2
B. F1, F2, x, y
C. x, y, a, b
D. F1, F2
-
Câu 5:
Hãy xem xét định nghĩa hàm dựng nào sau đây là đúng nhất?
A. Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, không kế thừa
B. Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, có kế thừa
C. Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng hoặc con trỏ đối tượng, có kế thừa
D. Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng hoặc con trỏ đối tượng, không kế thừa
-
Câu 6:
Thế nào được gọi là hiện tượng nạp chồng?
A. Hiện tượng lớp con kế thừa định nghĩa một hàm hoàn toàn giống lớp cha
B. Hiện tượng lớp con kế thừa định nghĩa một hàm cùng tên nhưng khác kiểu với một hàm ở lớp cha
C. Hiện tượng lớp con kế thừa định nghĩa một hàm cùng tên, cùng kiểu với một hàm ở lớp cha nhưng khác đối số
D. Hiện tượng lớp con kế thừa định nghĩa một hàm cùng tên, cùng các đối số nhưng khác kiểu với một hàm ở lớp cha
-
Câu 7:
Để khai báo mảng số thực động thì dùng đoạn mã nào sau đây:
A. float *M; int n;cout<<”\n\t Nhập số phần tử mảng “;cin>>n; A M = new float [n];
B. int n; cout<<”\n\t Nhap số phần tử mảng: “;cin>>n; float M[n];
C. intn; floatM[n];
D. float M[int n];
-
Câu 8:
Hãy xem xét đoạn mã sau có lỗi ở dòng nào:
1. class Lopl
2. {
3. private:4. int a,b;
5. friend voidNhapQ;
6. };
7. class Lop2
8. {9. private:
10. float x,y;
11. friend void Nhap( );
12. };
13. void nhap()
14. {
15. Lopl objl; Lop2 obj2;
16. cout«"\n\t Nhap a -'; cin»a;
17. cout«"\n\t Nhap x ="; cin»x;
18. }
A. Lỗi tại dòng 16, 17
B. Không lỗi ở dòng nào
C. Lỗi tại dòng 15
D. Lỗi tại dòng 13
-
Câu 9:
Hãy xem xét đoạn mã sau có lỗi ở dòng nào:
1. class Lopl
2. {
3. private:
4. int a,b;
5. friend voidNhap();
6. };
7. class Lop2
8. {
9. private:
10. float x,y;
11. friend void Nhap( );
12. };
13. void nhap()
14. {
15. Lop 1 obj 1; Lop2 obj 2;
16. cout«"\n\t Nhap a ="; cin»objl.a;
17. cout«"\n\t Nhap x cin»obj2.x;
18. }
A. Không lỗi ở dòng nào
B. Lỗi tại dòng 15
C. Lỗi tại dòng 13
D. Lỗi tại dòng 16, 17
-
Câu 10:
Có 3 lớp khai báo như sau:
class Lopl
{
private:
int a,b;
public:float x,y;
friend class Lop2;
};
class Lop2
{
Lopl objA;
};
class Lop3
{
Lopl objB;
,};
Các Đối tượng objA và objB truy cập được các biến nào của lớp Lop1:
A. objA truy cập được tất cả các biến. objB truy cập được các biến x, y
B. objA và objB truy cập được tất cả các biến
C. objA và objB chỉ truy cập dược các biến x,y
D. objA truy cập được tất cả các biến. objB truy cập
-
Câu 11:
Giả sử có đoạn mã code được viết như sau:
class Lopl
{
public:
int a,b;
void nhap(){
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cin»b;}
};
class Lop2: public Lopl
{
public:
Lopl *p;
};
Khi khai báo đối tượng objLop2 cho Lop2 thì nó có truy xuất thủ tục nhập của lớp 1 bằng cú pháp nào sau:
A. objLop2.nhap()
B. objLop2->nhap()
C. objLop2.p ->nhap( ) objLop2.nhap()
D. Tất cả đều sai
-
Câu 12:
Giả sử có đoạn mã code được viết như sau:
class Lopl
{
public:
int a,b;
void nhap(){
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cin»b;}
};
class Lop2: public Lopl
{
public:
Lopl p;
};
Khi khai báo Đối tượng objLop2 cho Lop2 thì nó có thể truy xuất thủ tục nhập của lớp 1 bằng cú pháp nào sau đây là đúng nhất?
A. objLop2.nhap{) objLop2.p.nhap()
B. objLop2.nhap()
C. objLop2.p ^nhap()
D. Tất cả đều sai
-
Câu 13:
Giả sử có đoạn mã code được viết như sau:
class Lopl
{
public:
int a,b;
void nhap(){
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cin»b;}
};
class Lop2: public Lopl
{
};
Khi khai báo Đối tượng objLop2 cho Lop2 thì nó có thể truy xuất thủ tục nhập của lớp 1 bằng cú pháp nào sau đây là đúng nhất?
A. objLop2.nhap()
B. objLop2^nhap()
C. objLop2.p ^nhap() objLop2.nhap()
D. Tất cả đều sai
-
Câu 14:
Khai báo một lớp như sau:
class LopA
{
public:
void nhap()
{
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cm»b;}
};
Sau khi tạo con trỏ ở lớp *pobj của LopA thì dùng cú pháp nào sau đây để truy xuất thủ tục nhập ()
A. pobj—>nhap();
B. *pobj. nhap();
C. pobj.nhap();
D. *pobj. nhap();
-
Câu 15:
Khai báo một lớp như sau:
class LopA
{
public:
int a,b;
void nhap(){
cout«"\n\t a = ";cin»a;
cout«"\n\t b =";cin»b;}
Nếu một đối tượng objLopA được tạo ra thì việc gán giá trị 10 vào biến a,b được thực hiện bằng cách nào?
A. objLopA.a = objLopA.b = 10;
B. a= 10 b= 10
C. a = b = 10
D. objLopA.a.b-10;
-
Câu 16:
Từ khoá protected trong một lớp có ý nghĩa:
A. Khai báo các thành viên của lớp chỉ được thừa kế
B. Khai báo các thành viên được bảo vệ
C. Khai báo các thành viên của lớp được dùng riêng
D. Khai báo các thành viên của lớp sẽ được dùng chung và thừa kế
-
Câu 17:
Giả sử một lớp với các hàm dựng được khai báo như sau:
class Lop
{
private :
int a,b;
public:lop () // Ham dung 1
{
a = b = 5;
f
lop (int m, int n) // Ham dung 2
{
a ^ m; b ^n;
}
};
Khi tạo một đối tượng bằng cú pháp LopobjLop(4,5) thì hàm dựng nào sẽ đúng?
A. Hàm dựng 2
B. Hàm dựng 1
C. Cả 2 hàm dựng đều Được gọi
D. Không hàm dựng nào được gọi
-
Câu 18:
Giả sử một lớp với các hàm dựng được khai báo như sau:
class Lop
{
private :
int a,b;
public:lop () // Ham dung 1
{
a ^ b ^ 5;
}
lop (int m, int n) // Ham dung 2
{
a = m; b = n;
}
};
Khi tạo một đối tượng bằng cú pháp Lop obj Lop;
Thì hàm dựng nào sẽ được gọi
A. Hàm dựng 1
B. Hàm dựng 2
C. Cả 2 hàm dựng đều được gọi
D. hông hàm dựng nào được gọi
-
Câu 19:
Giả sử một lớp với các hàm dựng được khai báo như sau:
class Lop
{
private :
int a,b;
public:lop () // Ham dung 1
{
a = b = 5;
}
lop (int m, int n) // Ham dung 2
{
a ^ m; b =n;
}
};
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop *objLop;
objLop = new Lop;
A. Hàm dựng 1
B. Hàm dựng 2
C. Cả 2 hàm dựng đều được gọi
D. Không hàm dựng nào được gọi
-
Câu 20:
Giả sử một lớp với các hàm dựng được khai báo như sau:
class Lop
private :
int a,b;
public:lop ( ) // Ham dung 1
{
a = b = 5;
}
lop (int m, int n) // Ham dung 2
{
a = m; b = n;
}
};
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop ^objLop;
objLop = new Lop(3,4);
Thì hàm dựng nào sẽ được gọi
A. Hàm dựng 2
B. Hàm dựng 1
C. Cả 2 hàm dựng đều được gọi
D. Không hàm dựng nào được gọi