稍微记录一下effective c++的一些东西

纸上学来总觉浅,绝知此事要躬行。

书还没看完,,第一遍过到现在,感觉都忘记了,没写过代码,总觉得差很多,以后有机会一定每条实践过去。

多使用const
const出现在星号左边,表示被指物是常量,右边表示指针自身是常量

const成员函数:http://blog.sina.com.cn/s/blog_4dd77fd10100lug5.html
(const对象只能访问const成员函数)

const Rational operator* (const Rational& rhs) const;
返回一个const by-value 接受reference-to-const

C++转型:
const_cast
static_cast

http://blog.csdn.net/xiaobo620/article/details/7397743

Widget& operator=(const Widget& rhs)
{
return* this;
}

mutable

条款三:在使用对象之前将它初始化

总是在初值列中列出所有成员变量。

使用local-static代替non-local-static
http://blog.csdn.net/insistgogo/article/details/9427389

智能指针,类似于python的垃圾清除器:
std::auto_ptr //只允许一个对象访问
std::tr1::shared_ptr
手工释放资源时会出错,建议使用资源管理的类<资源取得时机便是初始化时机>(RAII)

explicit

不要执着于单语句,对于RAII来说 原因:

C++中函数形参之间创建产生的时间顺序是按照效率来的,
std::tr1::shared_ptr<xxx>(new xxx),test()

如果顺序如下
new
test
shared_ptr传参。

test出错那么shared_ptr自然也就炸了。资源泄露。

尽量以pass-by-reference-to-const 替换 pass-by-value

static对象设计(威胁)->多线程安全性?

不封装就难以改变(威胁到客户码)

面向对象守则,数据要尽可能封闭
封装的越厉害,对其封装的改变量就越大。

namespace xxx{

}

宁已non-member non-friend函数替换member函数

只有当参数被列于参数列内,这个参数才是隐式类型转换的合格参与者。

可以根据需求将std::swap特化

std::vector<std::tr1::shared_ptr<Windows>> VPW (使用类型安全容器)

尽量避免dynamic_casts转型

时间: 2024-10-25 21:40:39

稍微记录一下effective c++的一些东西的相关文章

fiddler 记录一些以前不熟悉的东西

fidddler已经用了3年了,一般就是抓包,看基本的信息,然后就是本地文件替换网络文件. 然后有一些很有用的东西的却没有深入的学习过.  -_-!. 抓https的包 fiddler的过滤器的使用 一些小问题的记录 抓https的包 直接抓https的包是不行的,因为被加密了,然后去网上查一些资料,写的过程超麻烦,fiddler要做设置,还要下载证书,还要对浏览器做设置......-_-!!! 不过那些教程都是针对fiddler2的,现在都有fiddler4了,抓取https的请求变的非常简单

jsp写商品显示信息和cookie浏览记录,网上看到的好东西,记录一下。

这是本次项目结果,商品展示页面和浏览历史记录页面. 1,先从数据库入手:创建商品数据库. CREATE TABLE `items` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(50) default NULL,   `city` varchar(50) default NULL,   `price` int(11) default NULL,   `number` int(11) default NULL,   `pict

稍微记录下Django2.2使用MariaDB和MySQL遇到的坑

现在演示一下整个流程吧 1.创建项目和应用 PS:你也可以使用PyCharm直接创建项目 2.注册应用 先把刚刚创建的应用添加进去 3.配置MySQL或者MariaDB 4.PyMySQL替换默认的MySQLdb Django使用的MySQLdb对Python3支持力度不够,我们用PyMySQL来代替 这句话其实就是兼容代码,这样你导入mysqldb也相当于导入PyMySQL了 5.创建数据库 Django除了默认的sqlite会帮你创建数据库外(只创建对应的表),其他数据库都不会帮你创建的,所

深度学习记录1

写一点东西记录一下学习过程,因为有些东西入门了之后就忘了没入门是什么状态了. 目前还在没入门的状态.门外汉学习一个东西的过程我觉得是这样: 1. 门外看到是什么样子 (知道深度学习可以做图像识别.当然不仅限于此) 2. 尝试去模仿摆出同样的样子 (训练一个模型,用来识别) 3. 尝试去进里面看看什么样子  (看看实际的算法.算法细节原理.优化) 4. 左碰碰右改改看看会变成什么样子 (尝试优化) 5. 重复3,4直到越看越明白 6. 从无到有创造一个看起来一样细看却不一样的样子 (按照自己的需求

起点.第一次写的东西.

这里记录着人生第一次写的东西..还有很多不懂的东西.以后会做的更好.<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>用户登录</title></head><body background="未标题-3 - 副本.jpg"><!--background 背景图片

MYSQL trigger 个人记录

同学要写个trigger,稍微帮他研究了下 以下主要是个人猜想理解的 主要讲update 我们在创建trigger时,数据库会对创建了trigger的表进行事件监听. 当表中的一条记录发生update操作的时候: - 数据库会在执行update之前,使用old来存储旧的记录. - 执行update. - update成功后,再使用new来存储(或指向)新的记录. 如此一来,我们就可以通过old.字段名来访问旧的记录,通过new.字段名来访问新的记录.old和new都特指update的表中的记录.

为了督促自己学习,记录自己成长的点滴

突发灵感想写东西记录一下,想起博文记录自己的学过的东西,同时也希望能将自己学到的,踩过的坑分享给大家,如果有什么写得不好,有啥毛病大家可以直接指出,这是开头

DNS设置SPF记录全攻略

邮箱域名的spf记录(邮箱反向解析DNS记录)添加方法(常用的域名提供商的解析方法) 当您使用中网科技旗下(中国万维网 WWW.C3W.CN )自带的DNS时,就可以使用这个功能: 域名管理下面的mydns中的txt记录就是spf记录:加入代码 v=spf1 include:spf.c3w.cn -all 请将c3w.cn改成您自己的域名. 具体的设置办法也可以看网上的关于spf的资料. 什么是SPF 就是Sender Policy Framework.SPF可以防止别人伪造你来发邮件,是一个反

Cstyle的UEFI导读:第18.0篇 NVRAM的工作原理(上)

虽有句话说的好,有用的东西记在脑子里,没有的记在笔记本上.但是现在的信息量越来越大,而且随着时间的推移记忆力会越来越不可靠,所以只好把最近工作之余看的一些东西记录下来,避免被迅速忘记.这里就记录一下一些NVRAM相关的东西. NVRAM的定义就不必罗嗦了,非易失性存储器,当然这种定义很宽泛,我们且不一样一个去说明,这里只说UEFI 里面最常用的狭义的NVRAM(SPI ROM里面的一块区域).一般而论UEFI当中会用到两块区域作为NVRAM分别为NVRAM,NVRAM_BackUp,至于为什么要