引言
本科一进学校就是学C语言,当初就是为了应付考试,瞎学一通。这么多年了,实在惭愧,关于C/C++依旧是小白级别的水平。平时做的一些项目也都是在面向过程,C++能力实在有限。
在leetcode刷题的时候,也发现了自己的薄弱。因此,决定抽空也复习复习C++,在这里做一些自己的笔记和理解。
C与C++的大致区别
众所周知,C是面向过程的语言,而C++作为C的升级版和扩展,是面向对象的语言,当然现在还有面向函数式的编程思想,可以说非常牛X。
所谓面向对象,包括了三大概念:封装、继承、多态。相比于C,C++中还多了命名空间、STL等扩展。
封装
关于封装,C语言中就有这类思想,没错,就是我们熟悉的struct,而在C++中,我们将变量与函数(方法)写在一个class中,实现封装,且通过public、private、protected来限定成员的访问权限(不在是struct中的默认公有)。
继承
以一个简单的例子来说明继承。声明一个父类person,其具有名字和年龄两个成员。再声明另一个class,student,具有姓名、年龄、学号三个成员。显然,student也是一个person呀,两者有共有的成员呀!程序员、工科生是需要精干的,怎么可能允许出现如此冗余的部分!于是乎,继承就来了。所谓父传子(女孩也一样哈,没有性别歧视的意思哦,路过的程序员小姐姐不要误会菜鸡哈哈哈哈),千百年来天经地义,C++利用继承来声明一个子类,使子类具有父类的所有成员,且可以自行创造其他成员,如下所示。
class person{
private:
char* name;
int age;
};
//学生具有人的属性
class student{
char* name;
int age;
int id;
};
//子类
class studen : public person{
int id;
};
继承:子类继承父类,复用代码。
多态
多态:父类的指针或引用有多重表现形态,用父类的指针或引用操作子类
今天先整理到这里,比较简单,菜菜的研究僧还要去赶论文!_!