Ở đây chúng ta sẽ xem một số câu hỏi phỏng vấn C ++ quan trọng.
-
Sự khác biệt giữa C và C ++ là gì?
Phím | C | C ++ |
---|---|---|
Giới thiệu | C được phát triển bởi Dennis Ritchie vào khoảng năm 1969 tại AT&T Bell Labs. | C ++ được phát triển bởi Bjarne Stroustrup vào năm 1979. |
Loại ngôn ngữ | Như đã đề cập trước đây C là lập trình thủ tục. | Mặt khác, C ++ hỗ trợ cả mô hình lập trình thủ tục và hướng đối tượng. |
Hỗ trợ tính năng OOPs | Vì C không hỗ trợ khái niệm OOP nên nó không hỗ trợ tính đa hình, đóng gói và kế thừa. | C ++ hỗ trợ tính đa hình, đóng gói và kế thừa vì nó là ngôn ngữ lập trình hướng đối tượng |
Bảo mật dữ liệu | Vì C không hỗ trợ đóng gói nên dữ liệu hoạt động như một thực thể tự do và có thể bị thao túng bởi mã bên ngoài. | Mặt khác, trong trường hợp đóng gói C ++ ẩn dữ liệu để đảm bảo rằng cấu trúc dữ liệu và toán tử được sử dụng như dự định. |
Loại điều khiển | C nói chung được gọi là ngôn ngữ hướng chức năng. | Mặt khác, C ++ được gọi là ngôn ngữ hướng đối tượng. |
Tính năng được hỗ trợ | C không hỗ trợ hàm và việc nạp chồng toán tử cũng không có tính năng vùng tên và chức năng biến tham chiếu. | Mặt khác, C ++ hỗ trợ cả nạp chồng hàm và toán tử cũng có tính năng vùng tên và chức năng biến tham chiếu. |
-
Sự khác biệt giữa con trỏ và tham chiếu là gì?
Sự khác biệt chính giữa con trỏ và tham chiếu là -
-
Tham chiếu được sử dụng để tham chiếu đến một biến hiện có với tên khác trong khi con trỏ được sử dụng để lưu trữ địa chỉ của biến.
-
Các tham chiếu không được gán giá trị null nhưng con trỏ có thể.
-
Một biến tham chiếu có thể được tham chiếu bằng cách chuyển theo giá trị trong khi một con trỏ có thể được tham chiếu nhưng chuyển bằng tham chiếu.
-
Tham chiếu phải được khởi tạo khi khai báo trong khi nó không cần thiết trong trường hợp con trỏ.
-
Một tham chiếu chia sẻ cùng địa chỉ bộ nhớ với biến ban đầu nhưng cũng chiếm một số không gian trên ngăn xếp trong khi một con trỏ có địa chỉ bộ nhớ và kích thước riêng trên ngăn xếp
-
Hàm ảo trong C ++ là gì?
Các hàm ảo trong C ++ sử dụng để tạo danh sách các con trỏ lớp cơ sở và gọi các phương thức của bất kỳ lớp dẫn xuất nào mà không cần biết loại đối tượng lớp dẫn xuất. Các chức năng ảo được giải quyết muộn, trong thời gian chạy.
Nếu một hàm ảo trong lớp cơ sở được khai báo là một hàm thành viên, nó sẽ trở thành ảo trong mọi lớp dẫn xuất từ lớp cơ sở đó. Vì vậy, việc sử dụng từ khóa virtual là không cần thiết trong lớp dẫn xuất trong khi khai báo các phiên bản được xác định lại của hàm lớp cơ sở ảo.
Ví dụ
#includeusing namespace std; class B {public:virtual void s () {cout <<"In Base \ n"; }}; class D:public B {public:void s () {cout <<"In Derived \ n"; }}; int main (void) {D d; // Một đối tượng của lớp D B * b =&d; // Một con trỏ kiểu B * trỏ tới d b-> s (); // in ra "D ::s () được gọi là" return 0;}
Đầu ra
Có nguồn gốc
Con trỏ này trong C ++ là gì?
Mọi đối tượng trong C ++ đều có quyền truy cập vào địa chỉ của chính nó thông qua một con trỏ quan trọng được gọi là con trỏ này. Con trỏ này là một tham số ngầm định cho tất cả các hàm thành viên. Do đó, bên trong một hàm thành viên, điều này có thể được sử dụng để tham chiếu đến đối tượng đang gọi.
Các hàm kết bạn không có con trỏ này, vì bạn bè không phải là thành viên của một lớp. Chỉ các hàm thành viên mới có con trỏ này.
Chúng ta hãy thử ví dụ sau để hiểu khái niệm của con trỏ này -
Ví dụ
#includeusing namespace std; class Box {public:// Định nghĩa hàm tạo Hộp (double l =2.0, double b =2.0, double h =2.0) {cout <<"Khối mã lệnh được gọi." < Volume ()> box.Volume (); } private:độ dài gấp đôi; // Chiều dài của một ô gấp đôi bề rộng; // Chiều rộng của hộp gấp đôi chiều cao; // Chiều cao của một hộp}; int main (void) {Box Box1 (3.3, 1.2, 1.5); // Khai báo box1 Box Box2 (8.5, 6.0, 2.0); // Khai báo box2 if (Box1.compare (Box2)) {cout <<"Box2 nhỏ hơn Box1" < Đầu ra
Constructor được gọi.