C++中的术语

1 声明式:所谓声明式是告诉编译器某个东西的名称和类型,但忽略细节。下面都是声明式:

extern int x;                 //对象(object)声明式 记住:变量的声明加extern关键字
std::size_t numDigits(int numbers);  //函数(function)声明式
class Widget;                  //类(class)声明式
template<typename T>   //模板(template)声明式
class GraphNode;       

每个函数的声明揭示其签名式,也就是参数和返回类型。一个函数的签名等同于该函数的类型。numDigits函数的签名是std::size_t (int),也就是说“这函数获得一个int并返回一个std::size_t".

2 定义式:定义式的任务是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。对function或function template而言,定义式提供了代码本体。对class或class template而言,定义式列出它们的成员。

3 初始化是“给予对象初值”的过程。对用户自定义类型的对象而言,初始化由构造函数执行。所谓default构造函数是一个可被调用而不带任何实参者。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。

如果构造函数被声明为explicit,这可阻止它们被用来执行隐式类型转换,但它们仍可被用来进行显示类型转换。

void doSomething(B bObject); //函数,接受一个类型为B的对象
B bObj1;  //一个类型为B的对象
doSomething(bObj1);  //没问题,传递一个B给doSomething 函数
B bObj2(28);
doSomething(28);  //错误,DoSomething应该接受一个B而不是一个int,而int和B之间并没有隐式转换
doSomething(B(28));  //没问题,使用B的构造函数将int显式转换

被声明为explicit的构造函数通常比其non-explicit兄弟更受欢迎,因为它们禁止编译器执行非预期(往往也不被期望)的类型转换。

4 copy构造函数被用来“以同类型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象”;

class Widget{
public:
    Widget(); //default构造函数
    Widget(const Widget &rhs);   //copy构造函数
    Widget& operator=(const Widget& rhs);  //copy assignment 操作符
};

Widget w1;  //调用default构造函数
Widget w2(w1);  //调用copy构造函数
w1=w2;  //调用copy assignment操作符

当你看到赋值符号时请小心,因为“=”语法也可以用来调用copy构造函数:

Widget w3=w2;  //调用copy构造函数

幸运的是“copy构造”和容易和“copy赋值”有所区别。如果一个新对象被定义(例如以上语句中的w3),一定会有个构造函数被调用,不可能调用赋值操作。如果没有新对象被定义(例如前述的“w1=w2”语句),就不会有构造函数被调用,那么当然就是赋值操作被调用。

copy构造函数是一个尤其重要的函数,因为它定义了一个对象如何passed by value(以值传递)。如果进行pass-by-reference-to-const(传引用),往往不需要调用copy构造函数。

时间: 2024-10-29 19:06:33

C++中的术语的相关文章

Oracle EBS Web ADI 中的术语

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 异步调用异步调用是这样子的,和引入接口表中的数据到Oracle应用中的进程不同,上传数据到接口表是一个单独的进程(例如,它们不是在同一时间发生的).当上传开始时,引入程序会被调用并且request ID会返回给用户.Oracle Applications会继续在后台运行引入程序,用户需要手工检查引入程序是不是在正确处理.那意味着提交上传和引入程序完成是不同步的,因此使用了异步术语. 客户端一

YARN/MRv2 中基本术语介绍

YARN/MRv2是下一代MapReduce框架(见Hadoop-0.23.0),该框架完全不同于当前的MapReduce框架,它在扩展性,容错性和通用性等方面更出色,据统计,Yarn有超过150000行代码,完全是重写编写的.本文介绍了YARN/MRv2中基本术语的含义,帮助有兴趣的程序员们对YARN有一个初步的理解. (1) YARN 下一代MapReduce框架的名称,为了容易记忆,一般称为MRv2(MapReduce version 2).该框架已经不再是一个传统的MapReduce框架

MYSQL 数据库中专业术语叫法

开始学习MySQL 数据库前,了解MYSQL 数据库中专业术语叫法,显示对数据足够了解和运用. 数据库: 数据库是一些关联表的集合.数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表格.列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据.行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据.冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性.主键:主键是唯一的.一个数据表中只能包含一个主键.你可以使用主键来查询数据.外键:外键用于关联两个表.复合

数据分析中的术语都有哪些,分别代表着什么意思?

大家都知道,不管是什么行业都会有一些专业性强的语言,这就是术语.当然,数据分析行业也不例外,我们在进行数据分析的时候在进行数据分析的时候也会遇到很多的术语,但是这些术语都代表什么意思呢?小编为大家总结了这些知识,希望能够给大家带来帮助. 数据分析中最常见的就是平均数,一般指算术平均数.就是一组数据的算术平均值,即全部数据累加除以数据个数的结果. 字段与记录也是比较重要的,字段就是代表事物或现象某种特征的变量.记录就是事物特征的具体表现. 绝对数与相对数 在数据分析中所占地位也是比较重的,绝对数就

6.Spring中AOP术语与XML方式简单实现

1.AOP术语 1. Joinpoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点 2. Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义 3. Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能) 4. Introduction(引介):引介是一种特殊的通知在不修改类代

区块链领域中的术语普及

为了进一步了解区块链,我们为感兴趣的初学者提供了一些术语: (1)区块链(Blockchain):区块链是一种分布式分类账,由不可更改的数字化记录的数据组成,称为数据块.然后使用加密签名将每个块"链接"到下一个块.这允许块链像分类帐一样使用,可以由具有适当权限的任何人共享和访问. (2)地址(Addresses):用于在网络上接收和发送事务. (3)比特币(Bitcoin):比特币是一个加密货币,基于POW区块链. (4)分组密码(Block cipher):是一种对文本进行加密(以产

核电PSA--sdp、rm系统中专业术语解释

核电机组是由反应堆及其配套的汽轮发电机组以及为维持它们正常运行和保证安全所需的系统和设施组成的基本发电单元. 在试验中可直接观察到的.最基本的不能再分解的结果称为基本事件. 风险(Risk) 风险是指对人们所从事的某项活动,在一定的时间内给人类带来的危害.这种危害不仅取决于事件发生的频率,而且还与事件发生后所引起的后果大小有关.所以通常把风险R定义为事件发生频率P和事件后果C的乘积,即: R=P×C 在本系统中,风险指的是反应堆堆芯受到严重损坏的年发生频率的大小. PSA(Probabilist

C# 基础中有关术语理解

一.栈vs堆  深入理解堆栈.堆在内存中的实现 二.Socket 深入探析c# Socket 三.多线程 c# 多线程 --Mutex(互斥锁)

Java中常用术语

迭代器(Iterator)模式,又叫做游标(Cursor)模式.GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节. 从定义可见,迭代器模式是为容器而生.很明显,对容器对象的访问必然涉及到遍历算法.你可以一股脑的将遍历方法塞到容器对象中去:或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧.