一、基礎語法
C語言和C++語言的基礎語法有許多相似之處,卻也存在一些不同點。其中最顯著的區別是C++具有類和對象的概念,這是C語言所不具備的。因此,在C++的程序中,可以使用類和對象來實現封裝、繼承和多態等面向對象的特性,而在C語言中則不能。
/* C語言程序示例 */ #include int main() { int a, b, sum; printf("請輸入兩個整數:\n"); scanf("%d%d", &a, &b); sum = a + b; printf("%d+%d=%d\n", a, b, sum); return 0; } /* C++程序示例 */ #include using namespace std; class Adder { public: int add(int a, int b) { return a+b; } }; int main() { int a = 2, b = 3; Adder adder; cout << a << "+" << b << "=" << adder.add(a, b) << endl; return 0; }
二、函數重載
函數重載是C++的一個特性,它允許在一個類或命名空間內定義同名函數,但參數類型、順序和個數不同。C語言中不支持函數重載,也就是說,同名函數在C語言中是不允許存在的。
/* C++中的函數重載 */ #include using namespace std; int Add(int a, int b) { return a + b; } double Add(double a, double b) { return a + b; } int main() { cout << Add(2, 3) << endl; // 5 cout << Add(2.5, 3.5) << endl; // 6 return 0; }
三、命名空間
命名空間也是C++的一個特性,它可以避免函數、變量和類等命名衝突的問題。C語言中沒有命名空間,因此,如果在C程序中定義同名變量或函數時,就容易出現命名衝突的問題。
/* C++中的命名空間 */ #include using namespace std; namespace A { int num = 1; void func() { cout << "namespace A" << endl; } } namespace B { int num = 2; void func() { cout << "namespace B" << endl; } } int main() { cout << A::num << endl; // 1 cout << B::num << endl; // 2 A::func(); // namespace A B::func(); // namespace B return 0; } /* C語言中不存在命名空間 */ #include int num = 1; void func() { printf("In C\n"); } int main() { printf("%d\n", num); // 1 func(); // In C return 0; }
四、繼承與多態
繼承和多態是C++的核心特性,它們是面向對象思想的重要表現形式。在C++中,一個類可以從另一個類派生出來,從而去繼承父類的屬性和方法。同時,通過虛函數的概念,C++允許派生類對基類的同名函數進行重寫,達到多態的效果。
/* C++中的繼承和多態 */ #include using namespace std; class Animal { public: virtual void sound() = 0; virtual ~Animal() {} }; class Dog: public Animal { public: void sound() { cout << "汪汪汪" << endl; } }; class Cat: public Animal { public: void sound() { cout << "喵喵喵" <sound(); // 汪汪汪 Animal *animal2 = new Cat(); animal2->sound(); // 喵喵喵 delete animal1; delete animal2; return 0; } /* C語言中沒有繼承和多態的概念 */ #include void sound(char *s) { printf("%s\n", s); } int main() { sound("汪汪汪"); // 汪汪汪 sound("喵喵喵"); // 喵喵喵 return 0; }
五、頭文件
頭文件是C和C++中經常使用的一種技術,它可以將函數和變量的聲明放在頭文件中,從而方便其他文件調用。C語言和C++語言的頭文件在使用上也存在一些差異,其中最主要的區別是C語言中需要使用extern關鍵字來聲明外部變量,而C++中則不需要。
/* C++中的頭文件 */ #include #include using namespace std; /* C語言中的頭文件 */ #include extern int num; int main() { /* C++ */ string str = "hello world"; cout << str << endl; /* C */ printf("%d\n", num); return 0; }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182031.html