数据抽象和封装基础知识__笔记

来源:互联网 发布:怎么链接淘宝店铺网址 编辑:程序博客网 时间:2024/05/29 11:23

数据抽象和封装基础知识__笔记,供以后复习用:

类背后蕴含的基本思想是数据抽象和封装

 

数据抽象是一种依赖于接口和实现分离的编程和设计技术。类的设计者必须关心类是如何实现的,但是使用该类的程序员不必了解这些细节,仅需抽象地考虑该类型能做什么。

 

封装是一项将低层次的元素组合起来形成新的、高层次实体的技术。函数和类都是封装的形式。被封装的元素隐藏了他们的实现细节,其主要优点在于:避免类内部出现无意的、可能破坏对象状态的用户级错误;使得修改类的实现时只要保持接口不变,就无需改变用户级代码。

 

类中可以定义的内容包括:数据成员、成员函数和类型别名:如string类中定义的string::size_type类型,这些类型别名一般定义为public以便用户使用它。

 

类的两个重载成员函数形参个数和类型不能完全相同,不能通过返回值类型区分两个函数是否重载。

 

inline成员函数的定义必须在调用该函数的每个源文件中是可见的。不在类定义体内定义的inline成员函数,其定义通常应该放在有类定义的同一个头文件中

 

在头文件中将类定义完后,千万不要忘记在最后一个右花括号后面的分号。

class A

{ };

 

类定义:一旦遇到右花括号,类的定义就结束了。

class B { };

并且一旦定义了类,那就知道了所以的类成员,以及存储该类对象的所需的存储空间

 

可以声明一个类而不定义它:

class A;

这个声明有时称为前向声明。在声明之后定义之前,类是一个不完全类型,即已知A是个类型,但不知道包含哪些成员。

 

不完全类型只能以有限的方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。

 

在创建类的对象之前,必须完整地定义该类。必须定义类,而不只是声明类,这样编译器就会给类对象分配相应的存储空间。同样,在使用引用或指针访问类的成员之前,必须已经定义类。

 

只有当类定义已经在前面出现过,数据成员才能被指定为该类类型。如果该类型是不完全类型(没有完整定义),那么数据成员只能是指向该类的指针或引用。

 

 

0 0
原创粉丝点击