透彻深入C++ ——基本篇

类型

1.bool: 0值为false,非0值为true。包括指针,非零指针为true;

2.char :int(c) 可以直接得到c的整型值,而不用先将转换为整形变量。C++里,基本类型间的转换都是以这种构造函数的形式转换的。
wchar_t:宽字符,统一所有字符的长度为固定字节,一般为2个字节(由具体实现决定),unicode就是这样的一种字符集;使用L标识,如L‘A’ ;

3.int :int默认有符号,16位的话,最大为32768,32位的话,最大20亿左右,C++11新增了long long。进制:0x-16,0-8,没有2进制。输入输出的时候,oct,hex,dec分别设定不同输出进制,如cin>>hex>>i;

4.double:可以使用科学记数法来表示浮点数常量,如1.213e-10.

5.< limits>里存放着具体实现的基本类型的特征
numeric_limits< short>::max():可以得到一个类型的最大值。
is_integer,is_signed等。

6.void *p:表示指向类型不明的一个指针;

7.枚举enum:也是一种用户自定义类型,微缩版 class。实质是对整型常量赋予枚举符,之后可以使用枚举符来使用对应的值,重在同一枚举类型彼此间的区分。在声明变量时,可以用命名的枚举名作为类型名。而且每一个枚举值都可以为其赋值一个整型数(默认从0开始递增,没初始化的会根据之前枚举符递增),之后可以用 枚举名(整型值)得到对应的枚举值。

8.*,&,(),[],*const 为声明运算符,这些只作用于一个变量。
如 int *x,y是一个int ,一个int *;

9.域解析运算符::的一个用法是:引用被局部变量遮蔽的全局变量。::x=9;是为全局变量x赋值。没有为被遮蔽的上层局部变量赋值的办法。

指针

1.0指针:C中的空指针NULL,在C++中使用0替代,所以可以直接将0赋值给指针,表示指针为空。

2.void 指针:可以将任何的指针赋值给void 指针,void 指针之间也可以比较想等,从void 指针转换为其他类型的指针需要显示指出。主要用于通用型的设计,比如传递void *指针至函数,不指定类型。

数组

1.数组大小:C++中可以使用变量来作为数组的大小,但是也并非动态的。

2.{}可以用来数组初始化,而不能用来赋值。

3.字符串文字量的类型是const char[],而也允许赋值给char (C中的类型),且末尾补\0,与C相同。但是不允许对char 的文字量做修改。
可以使用字符串文字量对字符数组初始化,末尾补\0.空字符串“”,实际为“\0”;

4.存在数组到指针的隐式转换,但是不存在从指针到数组的隐式转换。

const(常量关键字)

2.引用&:其实质就是一个常量指针,每次对它的访问都相当于对它的一个间接访问,但是没有其上的修改操纵。

结构(struct)

1.struct是class的简单形式,其主要区别有:struct可以使用{}初始化,而class除非所有成员变量都是public,否则只能是使用构造函数;struct的变量默认为public,class默认为private;struct的继承默认为public,class默认为private;
与C的struct相比,C中struct只是一些数据,没有函数,而C++中其与class的差异有时很小。

2.struct的指针可以使用->来访问其内的边开那个和函数。

3.struct没有==的操作,除非用户自定义。

4.结构体的大小不是简单的内部元素的相加,与实现相关,但是可以用sizeof得到。

5.可以在结构体内部使用指针自循环,但是不能使用自己的新对象自循环,存在死循环。

运算符

1.x>>2|y<<2 :数值的左移右移

2.C++中逻辑与和逻辑或只有&&和||,不像java中有&和|的形式,即均为短路或和短路与

3.new 用来建立起生存对象不依赖于作用域的对象,即建立的是存储在“自由存储“里的对象,一般为堆或动态分配的缓存区域。与之对应的就是delete。
对象分为静态对象和动态对象,像直接用变量声明的就是静态对象,而用new 的就是动态对象。其存储位置不同,声明周期不同。全局静态对象会在程序结束析构,局部静态对象会在作用域退出时析构,而动态对象只会在delete时和程序退出时析构,而且不区分全局和局部,与作用域无关,或者说作用域就是全局。
new 就相当于开辟一块区域,返回一个指针指向首地址。多维数组如下:
int (*p2)[10] = new int[2][10];
对于运算符new,有函数set_new_handler(函数名)来指定一个存储耗尽时调用的处理函数。

4.释放数组空间 delete [] pt;对于容器类算作一个简单对象。

显式类型转换

1.static_cast< T>:同类层次间的强转,编译时转,所以是静态的

2.还有其他三种:reinterpret_cast,dynamic_cast(运行时检查,所以是动态的),const_cast;

3.可以使用C语言中的强转形式(int)x,但是危险性较高。

4.函数风格的强转:形如构造函数,与C中的强转等价。多用于整型和枚举,浮点到整型,和构造函数(包括用户自定义类型和构造内部类型,如果没参数,使用默认值,内部类型为0)。如int(x);

语句

1.条件表达式:x=a>b?a:b;

2.在最小的作用域引进变量:在循环和条件的中声明是被推崇的。在条件中声明的只能是单个变量。

3.for循环也可以把循环变量更新放在循环体中,类似while。

4.goto只常用于多层循环的跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值