首页 > Effective C++ 1.0 -- 概述

Effective C++ 1.0 -- 概述

声明

对象声明,函数声明,类型声明,是告诉编译器某个东西的 名称和类型,但是略去了实现 细节,因为定义在其他的地方。

external int x;     //对象(object)声明
std:size_t numDigits(int  number)       //函数 声明
class Widget;       //类(class)声明
template<class T>
class GraphNode;        //模板类的声明

定义

是编译器为该对象拨发内存空间

类的三个默认成员函数

构造函数

default构造函数:是一个可被调用而不用传递任何参数的构造函数。

不用传递参数可能存在两个情况,第一种是函数没有参数,第二种是函数的参数都有缺省值。

我们建议把函数定义为explicit的,比如

class A
{
public:explicit A(int x = 0,bool b = true);
};

使用上面的关键字可以防止他们被执行隐式的类型转换,但是他们可以用来显示的类型转换。这样做可以防止编译器进行 隐式的类型转换。

拷贝构造函数和复制运算符的重载

注意拷贝构造函数和赋值运算符重载的时候的参数和返回值,尽量使用const和&

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

不确定行为(未定义行为)

未定义行为的结果是不可预期的,一般的情况就是访问一个未定义的空间,可能 会出现以下的一些情况

  • 访问成功,虽然该空间是未定义的,比如访问越界了,但是这个空间可能被其他的语句定义出来了,而这个时候和我的类型匹配,这个时候虽然是不当的,但是可以访问
  • 访问失败,空间没有被 定义出来
  • 访问失败,空间虽然被定义出来了,但是被其他的资源占用了,并且权限不被我们使用,所以不可用

TR1和Boost

TR1

TR1(”Technical Report 1”),是一个规范,描述加入C++的诸多的新机能。

Boost

Boost是一个网站也是一个开放源码的C++程序库。TR1的很多机能是以Boost为基础的,很多C++11的标准实际是参考了Boost。

更多相关:

  • 草色新雨中, 松声晚窗里。之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。一、M 语言在哪里?M语言的函数公式有三个地...

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...