ภาษา C++ ได้รับการออกแบบโดยการเพิ่มคุณสมบัติเพิ่มเติม เช่น แนวคิดเชิงวัตถุด้วยภาษาซี โปรแกรม C ส่วนใหญ่สามารถคอมไพล์ได้โดยใช้คอมไพเลอร์ C++ เช่นกัน แม้ว่าจะมีบางโปรแกรมที่ไม่สามารถคอมไพล์โดยใช้คอมไพเลอร์ C++ ได้
ให้เราดูโค้ดที่จะคอมไพล์ในคอมไพเลอร์ C แต่ไม่ใช่ในคอมไพเลอร์ C++
ในโปรแกรมนี้จะมีข้อผิดพลาดในการรวบรวมหนึ่งรายการสำหรับรหัส C++ เพราะเป็นการพยายามเรียกใช้ฟังก์ชันที่ไม่เคยประกาศมาก่อน แต่ในภาษา C อาจคอมไพล์
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
myFunction(); // myFunction() is called before its declaration
}
int myFunction() {
printf("Hello World");
return 0;
} เอาต์พุต(C)
Hello World
เอาต์พุต (C++)
[Error] 'myFunction' was not declared in this scope
ใน C ++ ตัวชี้ปกติตัวหนึ่งไม่สามารถชี้ตัวแปรคงที่บางตัวได้ แต่ใน C ตัวชี้สามารถชี้ได้
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
const int x = 10;
int *ptr;
ptr = &x;
printf("The value of x: %d", *ptr);
} เอาต์พุต(C)
The value of x: 10
เอาต์พุต (C++)
[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]
ใน C ++ เราต้องพิมพ์อย่างชัดเจนเมื่อเราต้องการกำหนดประเภทพอยน์เตอร์อื่นๆ เช่น int*, char* ให้กับตัวชี้ void แต่ใน C หากไม่ใช่แบบแคสต์ ตัวชี้จะถูกคอมไพล์
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
void *x;
int *ptr = x;
printf("Done");
} เอาต์พุต(C)
Done
เอาต์พุต (C++)
[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]
ใน C++ เราต้องเริ่มต้นตัวแปรคงที่ แต่ในภาษา C สามารถคอมไพล์ได้โดยไม่ต้องมีการกำหนดค่าเริ่มต้น
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
const int x;
printf("x: %d",x);
} เอาต์พุต(C)
x: 0
เอาต์พุต (C++)
[Error] uninitialized const 'x' [-fpermissive]
ใน C เราสามารถใช้ตัวแปรบางตัวชื่อ 'ใหม่' แต่ในภาษา C++ เราไม่สามารถใช้ชื่อนี้เป็นชื่อตัวแปรได้ เนื่องจากใน C++ คำว่า 'ใหม่' คือคีย์เวิร์ด ใช้เพื่อจัดสรรพื้นที่หน่วยความจำ
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
int new = 10;
printf("new: %d",new);
} เอาต์พุต(C)
new: 10
เอาต์พุต (C++)
[Error] expected unqualified-id before 'new' [Error] expected type-specifier before ')' token
เราไม่สามารถคอมไพล์โค้ดต่อไปนี้ใน C++ สิ่งนี้จะส่งคืนข้อผิดพลาดเมื่อเราพยายามแปลง int เป็น char* แต่ในภาษา C จะทำงานได้ดี
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
int main() {
char *c = 123;
printf("c = %u", c);
} เอาต์พุต(C)
c = 123
เอาต์พุต (C++)
[Error] invalid conversion from 'int' to 'char*' [-fpermissive]
ใน C เราสามารถใช้ void เป็น return type ของ main() แต่ใน C++ เราต้องใช้ int เป็น return type ของ main()
สำหรับ C.
ตัวอย่าง
#include<stdio.h>
void main() {
printf("Hello World");
} เอาต์พุต(C)
Hello World
เอาต์พุต (C++)
[Error] '::main' must return 'int'