<<C++ Primer>> 第 7 章 类
术语表
第 7 章 类
抽象数据类型(abstract data type): 封装(隐藏)了实现细节的数据结构。
访问说明符(access specifier): 包括关键字 public 和 private。用于定义成员对类的用户可见还是只对类的友元和成员可见。在类中说明符可以i出现多次,每个说明符的有效范围从它自身开始,到下一个说明符为止。
聚合类(aggregate class): 只含有公有成员的类,并且没有类内初始值或者构造函数。聚合类的成员可以用花括号括起来的初始值列表进行初始化。
类(class): C++提供的自定义数据类型的机制。类可以包含数据,函数和类型成员。一个类定义一种新的类型和一个新的作用域。
类的声明(class declaration): 首先是关键字 class(或者 struct),随后是类名以及分号。如果类已经声明而尚未定义,则它是一个不完全类型。
类的作用域(class scope): 每个类定义一个作用域。类作用域比其他作用域更加复杂,类中定义的成员函数甚至有可能使用定义语句之后的名字。
常量成员函数(const member function): 一个成员函数,在其中不能修改对象的普通(即既不是 static 也不是 mutable)数据成员。const成员的this指针是指向常量的指针,通过区分函数是否是 const 可以进行重载。
构造函数(constructor): 用于初始化对象的一种特殊的成员函数。构造函数应该给每个数据成员都赋一个合适的初始值。
构造函数初始值列表(constructor initializer list): 说明一个类的数据成员的初始值,在构造函数体执行之前首先用初始值列表中的值初始化数据成员将被默认初始化。
转换构造函数(converting constructor): 可以用一个实参调用的非显式构造函数。这样的函数隐式地将参数类型转换成类类型。
数据抽象(data abstraction): 着重关注类型接口的一种编程技术。数据抽象令程序员可以忽略类型的实现细节,只关注类型执行的操作即可。数据抽象是面对对象编程和泛型编程的基础。
默认构造函数(default constructor): 当没有提供任何实参时使用的构造函数。
委托构造函数(delegating constructor): 委托构造函数的初始值列表只有一个入口,指定类的另一个构造函数执行初始化操作。
封装(encapsulation): 分类类的实现与接口,从而隐藏了类的实现细节。在C++语言中,通过把实现部分设为 private 完成封装的任务。
显式构造函数(explicit constructor): 可以用一个单独的实参调用但是不能用于隐式转换的构造函数。通过在构造函数的声明之前加上 explicit 关键字就可以将其声明成显式构造函数。
前向声明(forward declaration): 对尚未定义的名字的声明,通常用于表示位于类定义之前的类声明。参见“不完全类型”
友元(friend): 类向外部提供其非公有成员访问权限的一种机制。友元的访问权限与成员函数一样。友元可以是类,也可以是函数。
实现(implementatation): 类的成员(通常是私有的),定义了不希望为使用类类型的代码所用的数据及任何操作。
接口(interface): 类型提供的(公有)操作。通常情况下,接口不包含数据成员。
成员函数(member function): 类的函数成员。普通的成员函数通过隐式的 this 指针与类的对象绑定在一起;静态成员函数不与对象绑定在一起也没有 this 指针。成员函数可以重载,此时隐式的 this 指针参与函数匹配的过程。
可变数据成员(mutable data member): 这种成员永远不是 const,即使它属于 const 对象。在 const 函数内可以修改可变数据成员。
名字查找(name lookup): 根据名字的使用寻找匹配的声明过程。
私有成员(private member): 定义在 private 访问说明符之后的成员,只能被类的友元或类的其他成员访问。数据成员以及仅同类本书使用而不作为接口的功能函数一般设为private。
公有成员(public member): 定义在 public 访问说明符之后的成员,可以被类的所有用户访问。通常情况下,只有实现类的接口的函数才被设为 public。
合成默认构造函数(synthesized default constructor): 对于没有显式地定义任何构造函数的类,编译器为其创建(合成)的默认构造函数。该构造函数检查类的数据成员,如果提供了类内初始值,就用它执行初始化操作;否则就对数据成员执行默认初始化。
this 指针(this pointer): 是一个隐式的值,作为额外的实参传递给类的每个非静态成员函数。this 指针指向代表函数调用者的对象。
= default: 一种语法形式,位于类内部默认构造函数声明语句的参数列表之后,要求编译器生成构造函数,而不管类是否已经有了其他构造函数。
<<C++ Primer>> 第 7 章 类的更多相关文章
- [C++ Primer] 第7章: 类
定义抽象数据类型 定义在类内部的函数是隐式的inline函数. const成员函数 又叫做常量成员函数, 成员函数参数列表之后紧跟const关键字, const修饰的是类this指针. 默认情况下th ...
- C++ primer plus读书笔记——第13章 类继承
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...
- C++ primer plus读书笔记——第12章 类和动态内存分配
第12章 类和动态内存分配 1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域运算符来指出静态成员所属的类.但如果静态成员是整形或枚举型const,则可以在类声明中初始化 ...
- C++ Primer 第2章 变量和基本类型
C++ Primer 第2章 变量和基本类型 C Primer 第2章 变量和基本类型 1 基本内置类型 算数类型 类型转换 字面值常量 2 变量 变量定义 3 复合类型 引用d左引用 指针d 4 c ...
- 逆向基础 C++ Primer Plus 第二章 开始学习C++
C++ Primer Plus 第二章 开始学习C++ 知识点梳理 本章从一个简单的C++例子出发,主要介绍了创建C++程序的步骤,以及其所包含的预处理器编译指令.函数头.编译指令.函数体.注释等组成 ...
- C++ Primer Plus 第一章 预备知识
C++ Primer Plus 第一章 预备知识 知识点梳理 本章主要讲述了C++的由来,讨论了面向过程语言与面向对象语言的区别,介绍了ANSI/ISO制定的C++标准,阐述了在Windows.Mac ...
- [Effective Java]第四章 类和接口
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 《深入理解java虚拟机》第六章 类文件结构
第六章 类文件结构 6.2 无关性的基石 各种不同平台的虚拟机与所有的平台都统一使用的程序存储格式--字节码(ByteCode)是构成平台无关性的基石.java虚拟机不和包括java在内的任何语言 ...
- 《Effective Java 2nd》第4章 类和接口
目录 第13条: 使类和成员的可访问性最小化 第14条:在公有类中使用访问方法而非公有域 第15条:使可变性最小化 第16条:复合优先于继承 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承 ...
随机推荐
- Linux 打印可变参数日志
实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...
- 关于项目在网页中运行部分jsp出现乱码(由request.getRequestDispatcher("XXX.jsp").forward(request, response)造成)的解决方法
在写jsp的时候发现部分的jsp在浏览器预览时出现乱码,为一堆问号,如图: 当时问了同学,只有部分jsp会出现乱码,因为重新建一个jsp在运行就没有错误,可以显示出来,所以发现是jsp头部的错误,当新 ...
- 关于一次同余方程的一类解法(exgcd,CRT,exCRT)
1.解同余方程: 同余方程可以转化为不定方程,其实就是,这样的问题一般用拓展欧几里德算法求解. LL exgcd(LL a,LL b,LL &x,LL &y){ if(!b){ x=; ...
- 3.开始使用Spring Cloud实战微服务
开始使用Spring Cloud实战微服务 3.1. Spring Cloud实战前提 3.1.1. 需要的技术储备 语言方面:可以使用Java.scala.Groo ...
- window环境下 恢复odoo数据库备份文件时产生的 Database restore error: Command `psql` not found.
1,首先先查看 PostgreSQL 是否安装在C盘,如果安装在其他盘 则需要配置环境变量 配置完成后重启服务就可以了 2, 如果还不行,只需在odoo.conf中添加一个配置设置.也就是在odoo项 ...
- PMML辅助机器学习算法上线
在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环 ...
- 升级日志sdfsdfsdfsdfsdfdsf
升级日志sdfsdfsdfsdfsdfdsf 升级日志小书匠 版本号 新功能 修改
- matplotlib展现混淆矩阵
1.展现混淆矩阵 import matplotlib.pyplot as plt import itertools def plot_confusion_matrix(cm, classes, tit ...
- 使用Navicat Premium 客户端绕过白名单限制mysql数据库
针对有些数据库有白名单限制,但如果IP经常浮动的话,会要经常加白名单,但如果知道可以连接数据库的linux用户密码就能 通过SSH通道代理来连接数据库.保存密码后,这样就能直接连接数据库,减省很多麻烦 ...
- 阶段3 3.SpringMVC·_03.SpringMVC常用注解_6 CookieValue注解
演示 访问服务器会有session.它是一cookie的形式返回给客户端的 拿到的值