1. 从洗衣流程看面向对象:为什么C++比C更强大?
记得刚开始学习C++时,我对"面向对象"这个概念一直很困惑。直到有一天在宿舍洗衣服,突然明白了其中的区别。用C语言写洗衣程序,我们会这样思考:
c复制// 面向过程的洗衣程序
void wash_clothes() {
put_clothes_in_machine();
add_detergent();
start_machine();
wait(30);
take_out_clothes();
}
这种写法很直观,但有个致命问题:如果换了滚筒洗衣机,或者要洗羊毛衫,整个流程都得重写。这就像每次换宿舍楼,都得重新学习洗衣房的使用方法一样麻烦。
C++的面向对象思维则完全不同。它把洗衣过程抽象为四个对象:
cpp复制class Person {
public:
void operateWashingMachine(WashingMachine& wm);
};
class WashingMachine {
public:
void wash(Clothes& c, Detergent& d);
private:
int wash_time;
};
// 其他类定义...
这种设计的美妙之处在于:当洗衣机升级时,只需修改WashingMachine类的实现,其他代码几乎不用动。就像学校换了新洗衣机,我们只需要学习新机器的操作方法,洗衣的基本流程还是不变的。
关键理解:面向对象不是要否定过程,而是把固定的流程拆解到各个对象中,让对象自己决定如何完成任务。这就像好的团队合作——每个人清楚自己的职责,不需要外部一步步指挥。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 类的本质:不只是"大号结构体"
很多教材说"类就是带函数的结构体",这个说法虽然形象,但容易让人低估类的威力。让我们通过一个链表节点的例子来深入理解:
2.1 从C结构体到C++类
C语言版本:
c复制struct Node {
int val;
struct Node* next;
};
void init_node(struct Node* n) {
n->val = 0;
n->next = NULL;
}
