一、基础语法
C语言和C++语言的基础语法有许多相似之处,却也存在一些不同点。其中最显著的区别是C++具有类和对象的概念,这是C语言所不具备的。因此,在C++的程序中,可以使用类和对象来实现封装、继承和多态等面向对象的特性,而在C语言中则不能。
/* C语言程序示例 */ #includeint 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++中的函数重载 */ #includeusing 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++中的命名空间 */ #includeusing 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++中的继承和多态 */ #includeusing 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 << "喵喵喵" << endl; } }; int main() { Animal *animal1 = new Dog(); animal1->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; }