Ngôn ngữ C ++ được thiết kế bằng cách thêm một số tính năng bổ sung như khái niệm Hướng đối tượng với C. Hầu hết các chương trình C cũng có thể được biên dịch bằng trình biên dịch C ++. Mặc dù có một số chương trình không thể được biên dịch bằng trình biên dịch C ++.
Hãy để chúng tôi xem một số mã, sẽ được biên dịch trong trình biên dịch C, nhưng không phải trong trình biên dịch C ++.
Trong chương trình này sẽ có một lỗi biên dịch cho mã C ++. Bởi vì nó đang cố gắng gọi một hàm không được khai báo trước đó. Nhưng trong C, nó có thể biên dịch
Đối với C.
Ví dụ
#include<stdio.h> int main() { myFunction(); // myFunction() is called before its declaration } int myFunction() { printf("Hello World"); return 0; }
Đầu ra (C)
Hello World
Đầu ra (C ++)
[Error] 'myFunction' was not declared in this scope
Trong C ++, một con trỏ bình thường không thể trỏ một số biến hằng số, nhưng trong C, nó có thể trỏ.
Đối với C.
Ví dụ
#include<stdio.h> int main() { const int x = 10; int *ptr; ptr = &x; printf("The value of x: %d", *ptr); }
Đầu ra (C)
The value of x: 10
Đầu ra (C ++)
[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]
Trong C ++, chúng ta phải đánh máy rõ ràng khi muốn gán một số kiểu con trỏ khác như int *, char * cho con trỏ void, nhưng trong C, nếu nó không phải là kiểu ép kiểu, nó sẽ được biên dịch.
Đối với C.
Ví dụ
#include<stdio.h> int main() { void *x; int *ptr = x; printf("Done"); }
Đầu ra (C)
Done
Đầu ra (C ++)
[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]
Trong C ++, chúng ta phải khởi tạo các biến hằng số nhưng trong C, nó có thể được biên dịch mà không cần khởi tạo.
Đối với C.
Ví dụ
#include<stdio.h> int main() { const int x; printf("x: %d",x); }
Đầu ra (C)
x: 0
Đầu ra (C ++)
[Error] uninitialized const 'x' [-fpermissive]
Trong C, chúng ta có thể sử dụng một số biến có tên là ‘new’. Nhưng trong C ++, chúng ta không thể sử dụng tên này làm tên biến vì trong C ++, ‘new’ là một từ khóa. Điều này được sử dụng để cấp phát không gian bộ nhớ.
Đối với C.
Ví dụ
#include<stdio.h> int main() { int new = 10; printf("new: %d",new); }
Đầu ra (C)
new: 10
Đầu ra (C ++)
[Error] expected unqualified-id before 'new' [Error] expected type-specifier before ')' token
Chúng tôi không thể biên dịch mã sau trong C ++. Điều này sẽ trả về một lỗi khi chúng tôi đang cố gắng chuyển đổi int thành char *. Nhưng trong C, nó sẽ hoạt động tốt.
Đối với C.
Ví dụ
#include<stdio.h> int main() { char *c = 123; printf("c = %u", c); }
Đầu ra (C)
c = 123
Đầu ra (C ++)
[Error] invalid conversion from 'int' to 'char*' [-fpermissive]
Trong C, chúng ta có thể sử dụng void làm kiểu trả về của main (), nhưng trong C ++, chúng ta phải sử dụng int làm kiểu trả về của main ().
Đối với C.
Ví dụ
#include<stdio.h> void main() { printf("Hello World"); }
Đầu ra (C)
Hello World
Đầu ra (C ++)
[Error] '::main' must return 'int'