
C++
文章平均质量分 66
茂树茂树
这个作者很懒,什么都没留下…
展开
-
nullptr与NULL区别
#include using namespace std;void show(int num){ cout << "int " << endl;}void show(int* num)(本程序测试是用int* 可以其他类型,最终是 std::nullptr_t类型转化过来){ cout << "int* " << endl;}int main(){ cout << "NUL原创 2016-02-14 10:59:50 · 2621 阅读 · 0 评论 -
const——const与define
常量数据在程序执行前就已经存在,他们被编译到可执行文件中,也就是当程序自动运行时,他们便会被加载出来,然后这些数据就会在常量数据区保存,该区域的属性中是没有写的权限的.常量数据的地址减去基地址便是他在文件中的偏移地址. 在c++中可以用宏机制表示常量,也可以用const将变量定义成一个常量.Define:Define 是一个真实常量,在编译时就将宏名称替代成相应的信息.#i原创 2015-11-22 12:24:23 · 565 阅读 · 0 评论 -
const——指针和引用以及复合类型
Const与指针:int a (1024); const int * p1(&a);//p1可以指向不同的对象,对象的内容只能读不可写 int * const p2(&a);//p1可以指向唯一的对象,对象的内容可读可写 const int * p3(&a);//同上 const int * const p4(&a);//p1可以指向唯一的对象,对象的内容只能读不可写 int con原创 2016-02-14 17:48:12 · 448 阅读 · 0 评论 -
成员函数
成员函数成员函数: 成员函数生命必须在类的内部,但是定义可以在类的内部也可以在类的外部。 定义在类的内部的成员函数都被默认为inline属性。同时也可以在类中声明成员函数时为inline,在外部定义时用inline修饰,也同样达到内联的目的。(一般inline修饰的成员函数定义应该和类一样位于头文件中)。 同时成员函数也可以重载,重载的机制规则与普通函数一样。详细说一下定原创 2016-03-07 22:27:01 · 910 阅读 · 0 评论 -
引用与指针区别
引用类型及操作的本质: 只读指针反汇编引用操作反汇编#include using namespace std;void add(int *const nVar){(*nVar) ++; //mov eax,dword ptr [nVar] //mov ecx,dword ptr原创 2015-11-21 13:03:35 · 748 阅读 · 0 评论 -
构造函数
构造函数 类通过一个或几个特殊的成员函数控制类对象初始化过程这样的成员函数为构造函数。构造函数的函数名与类名相同,没有返回类型,不能声明为const成员函数(因为直到构造函数初始化过程后,对象才能真正的取得其常量属性)一个类中可以有多个构造函数。构造函数有一个初始化列表。 &构造函数初始化列表: 构造函数初始化时,每个成员函数只能初始化一次,虽然成员函数的形参顺序必须与实参顺原创 2016-03-07 22:28:52 · 2909 阅读 · 2 评论 -
声明与变量
声明与定义之间的区别:定义: 1.特殊的声明,确定对象类型并分配内存,用于创建新的对象2.内存位置不发生改变,同一作用域内只能(而不是必须)出现一次声明: 1.普通的声明,描述对象的类型,用于引用 指代其他地方定义的对象2.可以出现在不同作用域多次3.提醒编译器,在同一作用域内不能出现重名现象4.为编译器提供函数原型,避免隐式认定导致的错误1.为什么要确定类原创 2015-11-02 22:28:08 · 725 阅读 · 0 评论 -
register
c中register: 在C语言中存储类型说明符 register要求变量保存在cpu寄存器中,所以不能用取地址符& 取其地址,并且,在全局变量的地方不能出现register 防止存储类型不唯一引起的冲突。同时,register 变量必须是能被CPU寄存器所接受的类型。这就意味着,register 必须是一个单个的值,并且长度应小于等于整型长度。#include #includ原创 2016-02-29 15:53:06 · 1529 阅读 · 0 评论 -
const——c与c++不同
初学c++,对const有一点小小的感悟,记录下来,有不到位的地方还请各位大神指点。> const是一个类型限制符,本质上是对变量所在的存储空间有所限制——只能读不能写,就是这个限制导致了const的各种语法特性。 在编译期间,编译器会检查是否有改变const所修饰变量的值的行为(操作,运算符的副作用等),同时将用该变量的初始值替代文件中出现该变量的地方,如果初始值为常量则直接原创 2015-12-28 10:27:59 · 540 阅读 · 0 评论 -
constexpr
如果说const仅仅着眼与当下,而忽略了“指向”的对象,这种常量仅仅建立在const本身上的话,constexpr才能称得上真正的常量。(const有点狮子座,constexpr可是白羊座,呵呵→_→)。 由于const的初始化可以由变量和常量来初始化,但是constexpr仅仅只要求初始化对象为常量表达式,这种常量表达式是种值不会改变并且编译期间就能得到结果的表达式。可见,constexp原创 2015-12-28 10:57:45 · 964 阅读 · 0 评论 -
表达式
一个表达式可由一个或多个运算对象(可能还是另一个表达式),运算符组成。返回一个结果,这个结果的类型由表达式所定义。 对于最简单的表达式可由字面值或者一个变量组成,同时返回值为这个变量或字面值,对于复杂的表达式,可由一元运算符,二元运算符等和几个具有表达式特征的运算对象组成,对于特殊的表达式,一个函数运算符即()加几个未知数量的运算对象组成。 表达式有两个作用:第一个就是定义了运算对象的做什么原创 2015-12-01 14:24:26 · 509 阅读 · 0 评论 -
表达式求值顺序潜在的缺陷
C++primer 第124页一问题:C++语言没有明确规定大多数二元运算符的求值顺序,给编译器优化留下了余地,这种策略实际上是在代码生成效率和程序潜在缺陷之间进行了权衡,你认为这可以接受吗? 表达式的意义:1)定义了表达式计算过程(运算符的优先级 和结合律 运算对象的求值顺序)2)指出对环境(可以把环境看作当时可用的所有变量)是否有影响原创 2015-11-30 17:12:32 · 1352 阅读 · 1 评论 -
auto与decltype区别
3.处理类型typedef:1、 typedef是一个彻底的封装的类型——在声明它之后不能进行类型扩展(long short unsigned signed),而define只是一种替代例如: #define peach int Typedef peach i;/*没问题*/ Typedef int banana; Unsigned banana i;/原创 2015-11-23 16:58:57 · 1013 阅读 · 0 评论