《Effective Modern C++》条款7:在创建对象时注意区分()和 {}
在C++11中有三种指定初始化值得方式,分别是使用小括号()、等号=和大括号{}。其中,前两种在C++98中就已经存在,而使用大括号的初始化语法则是C++11引入的。
在C++11中有三种指定初始化值得方式,分别是使用小括号()、等号=和大括号{}。其中,前两种在C++98中就已经存在,而使用大括号的初始化语法则是C++11引入的。
一个函数模板的声明和调用大致形如:
1 | // 声明 |
模板型别推导的结果,不仅依赖于传入实参的型别,还依赖函数形参的型别。
问题描述:
求均值最常用的方法是将两数相加再除以2,但是当两个数都大于其最大值的一半时,
相加的结果会发生内存移除。比如:
1 | unsigned average(unsigned a, unsigned b) |
表达式x = x & (x - 1)的含义是:
每执行一次,就会把x二进制格式下最右边的1变为0,换言之就是该表达式有效的执行次数等于x二进制格式下1的个数。
表达式:x & (-x)的含义:
返回x在二进制下的最右边的1表示的值:
memset是C/C++编程中常用的函数,一般用于申请内存后的初始化操作,比如:
1 | char* buffer = (char*)malloc(1024); |
memset接收三个参数:
这个函数看似简单,但是如果使用不当则会导致一些未知的bug。以下是目前遇到的几个陷阱。