ภาษา 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'