7.1 定义抽象数据类型

  1. 每个类定义了唯一不同的类型,即使成员完全相同。
  2. 类名可作为类型的名字使用,Sales_data item1;默认初始化Sales_data类型的对象
  3. 类的声明,和函数一样,声明和定义分开,且也能仅声明类而暂时不定义它,称之为前向声明,向程序中引入名字Screen并指明这是一种类型(类类型),但是不清楚它到底包含了那些成员。不完全类型只能在非常有限的情景下使用:可定义指向自身类型的指针或者引用,也可声明(但是不能定义)以不完全类型作为参数或者返回类型的函数,如:

class Link_screen {

int i;

Link_screen *next;//定义自身类型的指针

Link_screen *prev;

}

引申:必须在类的初始化列表中初始化的几种情况

  1. 类成员为const类型
  2. 类成员为引用类型

class Person {

int &age;

const string name;

Person &chuandong;

int height;

};

Person::Person(int &nAge, const string strName, Person &cd, int nHeight): age(nAge), name(strName), chuandong(cd)

{

height = nHeight;

};

究其因

const对象或引用只能初始化,但是不能赋值。构造函数的函数体内只能赋值而不是初始化,因此初始化对象或者引用的唯一机会是构造函数体之前的初始化列表中。从无到有叫初始化,初始化(调用拷贝构造函数)创建了新对象;赋值(调用赋值操作符)没有创建新对象,而是对已有的对象赋值。

 

3.类成员为没有构造函数的类类型

时间: 2024-10-07 12:19:01

7.1 定义抽象数据类型的相关文章

【C++ Primer 第7章】定义抽象数据类型

参考资料 1. C++Primer #7 类 虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可.同一个类的所有对象都使用同一个虚表. 为了指定对象的虚表,对象内部包含一个虚表的指针,来指向自己所使用的虚表.为了让每个包含虚表的类的对象都拥有一个虚表指针,编译器在类中添加了一个指针,*__vptr,用来指向虚表.这样,当类的对象在创建时便拥有了这个指针,且这个指针的值会自动被设置为指向类的虚表. 原文地址:https://www.cnblogs.com/sunbines/p/92

计算机软考笔记之《抽象数据类型(ADT)》

1.引言 1抽象数据类型和数据结构的关系 抽象数据类型(ADT)是一种比数据结构处于更高抽象层的数据类型,ADT使用数据结构来实现. 2数据类型的定义和应用于数据的操作定义是ADT背后的一部分概念,隐藏数据上的操作是如何进行的. 3分类:简单抽象数据类型和复杂抽象数据类型 简单ADT:整数.实数.字符.指针: 复杂ADT:需要建立.不需要详细说明实现过程的泛化操作成为抽象. 抽象概念意味着: ①知道一个数据类型能做什么: ②如何去做是隐藏的. 4定义 抽象数据类型就是与对数据类型有意义的操作封装

java抽象数据类型

抽象数据类型抽象数据类型是描述数据结构的一种理论工具.在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念.数据类型(data type)是一组性质相同的数据元素的集合以及加在这个集合上的一组操作.例如Java 语言中就有许多不同的数据类型,包括数值型的数据类型.字符串.布尔型等数据类型.以Java 中的int 型为例,int 型的数据元素的集合是[-2147483648,2147483647]间的整数,定义在其上的操作有加.减.乘.除四则运算,还有模运算等.定义数据类型的作用一个是隐藏计算机

抽象数据类型

抽象数据类型是描述数据结构的一种理论工具.在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念.数据类型(data type)是一组性质相同的数据元素的集合以及加在这个集合上的一组操作.例如Java 语言中就有许多不同的数据类型,包括数值型的数据类型.字符串.布尔型等数据类型.以Java 中的int 型为例,int 型的数据元素的集合是[-2147483648,2147483647]间的整数,定义在其上的操作有加.减.乘.除四则运算,还有模运算等.定义数据类型的作用一个是隐藏计算机硬件及其特性

【Python&数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

数据类型和抽象数据类型

<(^-^)> 我们知道在各种编程语言中都会有数据类型. 一.数据类型 先看看为什么会有不同的数据类型呢?很简单,很多东西不能一概而论,而是需要更精确的划分.计算机计算1+1并不需要多么大的空间,但是计算10000000000+1000000000就得需要有个比较大的空间来放.还有有时候会计算小数,小数的位数不一样,需要的空间也就不一样.数字1和字母a也需要区分啊,于是开发者就想出了“数据类型”这一招,用来描述不同的数据的集合. 我记得最早接触的数据类型就是int了.当初一个int a;就把我

抽象数据类型(ADT)入门(一)

抽象数据类型(ADT)入门(一) 1.抽象数据类型(Abstract Data Types,ADT)和ADT的实现 抽象数据类型:一个数据元素集合以及在这些数据上的操作. ADT的一个实现包括存储数据元素的存储结构以及实现基本操作的算法. 在这个数据抽象的思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念.这使得只研究和使用它的结构而不用考虑它的实现细节成为可能.实际上,这通常使用在int.double.char和bool等预定义数据类型上的方法,使用这些数据类型的程序员在

ELF格式解析库之抽象数据类型

抽象?抽谁的象? ELF是一种链接执行格式,它规定了对于一个ELF文件的基本数据类型是什么样的.可是,要解析一个ELF文件,而这个ELF文件或者是32Bits 或者是 64Bits,反正字长是未定的,怎么办?难道我们要定义两套解析的接口,以对应不同的字长的ELF文件吗?如果要这样做,不是不可以,只是那样做为接口的设计增加了太大的负担.这里我们采用"抽象"的方式,将已有的两套基础数据结构封装成一个兼容的数据结构.这样,我们设计解析接口时,可以做到尽量的简化,大大的减轻了工作量. 因此,这

线性表的抽象数据类型描述

代码如下 1 //抽象数据类型线性表的定义 2 #include <studio.h> 3 /*-------------------初始化线性表-----------------------*/ 4 void InitList(SqList *&L) 5 { 6 L=(SqList*)malloc(sizeof(SqList)); 7 L->length=0; 8 } 9 /*--------------------销毁线性表,释放内存空间-------------------