不得不说,c++
比起c
便捷了很多,配上强大的IDE -> CLion
更是如虎添翼。
下面是一个简单是统计几个学生成绩的小案例。如果使用java
这样的纯面向对象的语言,非常简单;如果使用c
就比较麻烦了,需要去处理字符串,结构这些东西;如果是c++
呢?相对来说,还是比较简单。当然,这是一个简单的案例,没有涉及到函数的传参。
#include <iostream>
using namespace std;
struct Student {
int age;
bool gender;
double score;
string name;
};
int main() {
Student xiaoming = {
12,
true,
75.5,
"小明"
};
Student xiaohong = {
13,
false,
73,
"小红"
};
Student hanmeimei = {
12,
false,
88,
"韩梅梅"
};
Student leelei = {
13,
true,
96,
"李磊"
};
Student member[] = {xiaoming, xiaohong, hanmeimei, leelei};
size_t len = sizeof(member) / sizeof(member[0]);
// cout << "test for len === " << len << endl;
double total = 0;
for (int i = 0; i < len; ++i) {
total += member[i].score;
}
double avgScore = total / len; // 平均分
// 按分数降序排列
for (int j = 0; j < len; ++j) {
Student stu = {};
int k = -1;
for (int i = j; i < len; ++i) {
Student st = member[i];
if (stu.score < st.score) {
stu = st;
k = i;
}
}
stu = member[j];
member[j] = member[k];
member[k] = stu;
}
// show sorted array
for (int k = 0; k < len; ++k) {
Student f = member[k];
cout << f.name << " , "
<< f.age << " , "
<< f.gender << " , "
<< f.score
<< endl;
}
cout << "平均成绩是:" << avgScore;
return 0;
}
可以看到,这个程序非常简单。
- 而且
c++
的结构很适合用来替代java
中的POJO
对象。因为这种对象里面不会有实际的方法,主要是一些变量的存储,对对象的描述。 - 另外,在调用方法,也是非常的
OOP
的,看不到显式的指针操作,完全是对象式调用。 - 对于字符串,
c++
提供的string
对象其实和java
中的String
对象非常相似。可以直接赋值,也可以二次赋值。还可以通过+
连接两个字符串。不需要像C
那样需要通过指针或者strcpy();
之类的函数去处理。
ps: 对于有java
基础,但是没有c/c++
基础,想学习c/c++
的人,我想说,不要去学习c
,应该直接去学习c++
。因为c
上手太痛苦了。即使你感觉已经理解了指针。但是去处理一个具体的案例你就明白其中的痛苦了。比如处理上面的这个成绩统计的小案例上面,估计一大半c
初学者,新手会折戟沉沙。但是如果你是一个c++
的新手,就不会有这样的感觉。你会感觉如此简单,根本不需要更多思考。
c
真的不适合处理这些东西,你要在结构和字符串花大量时间。而java & c++
很明确的提供了这些api,让你只需要处理业务逻辑就好了