能不能简单举一个小的例子, 从而反应出c++设计的程序和c语言是不一样的
时间: 2024-10-13 13:07:12 浏览: 8
当然可以,让我们看一个简单的例子:
**C语言版本:**
```c
#include <stdio.h>
// 定义一个结构体表示学生信息
typedef struct {
int id;
char name[50];
float grade;
} Student;
// C风格的函数,计算平均成绩
void calculate_average(Student* students, int count) {
int total = 0;
for (int i = 0; i < count; i++) {
total += students[i].grade;
}
printf("Average grade: %.2f\n", total / count);
}
int main() {
Student students[] = { {1, "Alice", 85}, {2, "Bob", 92} };
int num_students = sizeof(students) / sizeof(students[0]);
calculate_average(students, num_students);
return 0;
}
```
**C++版本:**
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Student {
public:
int id;
string name;
float grade;
// 构造函数和成员初始器
Student(int id, const string& name, float grade) : id(id), name(name), grade(grade) {}
};
// 类方法计算平均成绩
void calculate_average(vector<Student>& students) {
int total = 0;
for (const auto& student : students) {
total += student.grade;
}
cout << "Average grade: " << fixed << setprecision(2) << (total / students.size()) << endl;
}
int main() {
vector<Student> students = {Student(1, "Alice", 85), Student(2, "Bob", 92)};
calculate_average(students);
return 0;
}
```
在这个例子中,C++版本引入了类(`Student`)、对象(`vector<Student>`)、构造函数、成员初始器等面向对象的概念。C++中计算平均成绩的函数成了类方法,并通过引用传递`students`集合,而不是直接指针,体现了封装和数据隐藏的特点。相比之下,C版本更像过程化编程,侧重于指针和数组操作。这就是C++设计的程序与C语言的一个显著差异。
阅读全文