引言:
在c语言中,关注着的是过程,分析出解决问题的步骤,通过函数调用逐步解决问题。
在C++中,关注的是对象,将一件事件拆分成不同的对象,靠对象之间的交互完成。
由于C++是c语言发展而来的,所以C++支持C语言操作,在C语言中,描述一个问题,一般用结构体(struct),而在C++中,struct
是一个类,默认情况下,所有成员都是公有的,可以被访问到,C++中还有一个关键字class,他也是类,默认成员是私有的。
类的定义
1.声明和定义全放在类体中,
2、声明放在头文件中,类的定义放在Cpp文件中。
重点:当成员函数在类中定义,编译器会将当成内联函数处理(inline),内联:将函数,展开直接替换到用到的地方,注意:递归和函数复杂,编译器不会将其设为内联。
类的访问限定符及封装
类有三大特性:封装,继承,多态。
这里讲封装,其他以后会介绍。
封装:将数据和操作数据的方法结合,隐藏对象的属性和实现细节,仅对外公开函数接口和公有的内容,和对象进行交互。
访问限定符:public,private,protect。
private,protect在类外被访问,访问权限作用域从该访问限定符出现到下一个限定符出现为止。
重点:访问限定符只在编译时有用,当映射到内存中,没有任何访问访问限定符的区别。
封装的好处:防止类内部出现无意的可能破坏对象的用户级错误
类的大小
定义一个空的类型,里面没有任何成员变量和成员函数,对该类型求sizeof,结果是1。
理由:空类型的事例中不包含任何信息,但是当我们声明该类型的实例中,它必须在内存中占有一定的空间,否则无法使用这些实例,至于占多少内存,有编译器决定,VS下是1;
扩展:如果往该类型中添加一个构造函和析构函数,再对该函数求sizeof,结果是1、
理由:构造函数和析构函数其他函数都是放在公共代码区,只要拿到它们的地址即可,编译器不会在实例中添加任何额外的信息。(如果不把成员函数放在公共代码区,每次调用都要在栈上开辟太耗费时间和空间)