02-05 从c到c++

1. bool

布尔类型变量true表示1;但是把string(4字节)转化为bool(1字节),会截断,举个例子:

bool result = true;

print result;

(答案:1)

bool result = true;

result = 100;

print result;

(答案: 1,因为截断只保留1字节)

2. const

const定义时,常量必须初始化: const int a; (wrong)  const int a = 100; (right)

const不能被更改,即不能重新被赋值, 举个例子:

const int a = 100;

a = 200; (错误,因为a是const,不能被更改)

const int *p; // const在*左边,表示指针所指向的变量是个const

p = &a;

*p = 200;(错误, 因为*p指向的a是个const,不能被更改)

int b = 5;

*p = 10;(错误,因为*p自己是个const,不能被更改)

int * const p2;  // Error: p2为一个常量,常量定义的时候必须初始化。且初始化之后不能再重新指向了(因为它自己是个const),比如:

int * const p2 = b;

p2 = &a;  // Error, 因为p2是个常量,常量不能被更改,即不能重新赋值

但*p2可以被重新赋值,因为它的类型是int (比如*p2=200, 正确)

3. 宏

高级编程:尽量用const替换#define,底层编程相反。

泛型编程本质:替换

4. 内存对齐

优点:性能考虑,对齐的数据上访问会很快(cpu访问效率提高)

如何对齐:略

5. new与delete

new: 创建堆空间(类似c malloc), 成功则返回首地址(else 直接抛出异常,因此一版失败,不进行NULL指针的判断!!!)

delete: 销毁堆上空间

delete数组如果不带中括号,那么销毁的空间是不确定的,例如:

new *p = new int; (new *p = new int(5) //初始化一个元素:5;但数组是没有办法初始化的,如需要,for循环语句初始化)

new *p2 = new int[10];

delete p;

delete [] p2;

new一个对象会做两件事情:step a.分配内存 step b. 调用构造函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值