当前位置: 首页 > 文档资料 > C++大学教程 >

6.19 章节小结

优质
小牛编辑
116浏览
2023-12-01

结构是用其他类型的元素建立的聚合数据类型。

结构定义用关键字 struct 引入,结构体放在花括号({ })中,结构定义以分号结尾。

结构标志声明结构类型的变量。

结构定义并没有在内存中保留任何空间,而是生成新的数据类型,用于声明变量。

使用成员访问运算符(包括圆点运算符和箭头运算符)访问结构成员或类成员。圆点运算符 通过对象的变量名或对象的引用访问结构和类成员。箭头运算符通过对象指针访问结构和类成员。

通过结构生成新数据类型有一定的缺点,可能出现未初始化的数据。如果 struct 的实现方法改变,则所有使用这个struct的程序都要改变。没有保护机制保证数据的正确和保持数据的一致状态。

类使程序员可以构造有属性和行为的对象。C++ 中用关键字 class 或 struct 定义类的类型,通常用关键字class,

可以用类名声明该类的对象。

类定义以关键字class开始。类定义体放在左右花括号({ })之间。类定义用分号终止。

任何可以访问类的对象的函数可以访问任何在 public 后面声明的数据成员和成员函数。

任何在 private 后面声明的数据成员和成员函数只能由该类的成员函数和友元访问。

成员访问说明符总是加上冒号,可以在类定义中按任何顺序多次出现。

不能在类的外部访问私有数据。

类的实现方法向客户隐藏。

构造函数是个特殊成员函数,初始化类对象的数据成员。类的构造函数在生成这个类的对象时自动调用。

与类同名而前面加上代字符(~)的函数称为类的析构函数。

类的public成员函数集称为类的接口或 public 接口。

在类定义以外定义成员函数时,函数名前面要加上类名和二元作用域运算符(::)。

尽管类定义中声明的成员函数可以在类定义之外定义,但成员函数仍然在类范围中。

如果在类定义中定义成员函数,则该成虽函数自动成为内联函数,但编译器有权决定其是否作为内联函数。

成员函数调用比过程式编程中的传统函数调用更简练,因为成员函数使用的大多数数据可以直接在对象中访问。

在类范围中,类成员可以简单地用名字引用。在类范围外,类成员是通过对象名、对象引用和对象指针来引用的。

成员选择运算符.和->用来访问类成员。

良好软件工程的一个基本原则是将接口与实现方法分离。

类定义通常放在头文件中,类的成员函数定义放在同一基本名字的源代码文件中。

类的默认访问模式是 private,因此在类名和第一个说明符(例如 public)之间的所有成员都是 private 类型。

public 成员的主要用途是向类的客户提供类的服务。

访问类的 private 数据应当用称为访问函数的成员函数进行控制。如果类允许客户读取 Private 数据的值,可以提供一个get函数;如果类允许客户修改 private 数据的值,可以提供一个 set 函数。

通常将类的数据成员指定为 private,将类的成员函数指定为 public,可以有助于调试,因为数据操作问题局部化在类成员函数或类的友元中。有些成员函数保持 private,是供类中其他函数使用的工具函数。

类的数据成员不能在类定义中初始化,应在类的构造函数中初始化或在生成对象之后设置其数值。

可以重载构造函数。

类对象初始化之后,操作该对象的成员函数应保证对象处于稳定状态。

声明类对象时可以提供初始化值,这些初始化值作为参数传递给类的构造函数。

构造函数可以指定默认参数。

如果类不定义构造函数,则编译器生成默认构造函数。这种构造函数不进行任伺初始化,因此生成对象时,不能保证处于一致状态。

自动对象的析构函数在对象离开范围时调用,析构函数本身并不删除对象,而是进行系统放弃对象内存之前的清理工作,使内存可以复用于保存新对象。

析构函数不接受参数也不返回数值。类只可能有一个析构函数(不能进行析构函数重载)。

赋值运算符(=)可以将一个对象赋给另一个同类型的对象,这种赋值方式一般通过默认的成员复制来完成。成员复制不适用于所有的类。