C++基础总结

1.读取数量不定的输入数据

while ( cin >> value)

  sum += value;

当遇到文件结束符,或者遇到一个无效输入时,istream对象的状态会变为无效。

Windows系统的文件结束符:Ctrl+Z,然后Enter;UNIX:Ctrl+D。

 

2.IO设施通常将输入(或输出)数据保存在一个缓冲区中。

 

3.Char* Char[]

char* s1 = "hello"; 指针指向的内存区域大小可随时改变

char s2[] = "world";数组对应的内存区域的地址和容量不会改变,数组内容可变

s1 = s2;正确

s2 = s1;错误

 

4.初始化不是赋值,初始化的含义是创建变量时赋予一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代。

 

5.分离式编译

声明规定了变量的类型和名字;定义还申请存储空间,也可能会为变量赋一个初始值。

变量的定义必须出现在且只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,却绝对不能重复定义。

 

6.C++对大小写字母敏感

 

7.复合类型

声明语句由一个基本数据类型和紧跟其后的一个声明符列表组成。

引用必须初始化,因为无法令引用重新绑定到另一个对象。

引用的类型都要和与之绑定的对象严格匹配。

指针:指针类型 指针指向的类型 指针的值(指针指向的内存区) 指针本身占据的内存区

指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。指针无须在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。

void*是一种特殊的指针类型,可用于存放任意对象的地址。

 

8.const限定符

const修饰的变量的值不能被改变,const对象必须初始化。

const对象被设定为仅在文件内有效。加上extern关键字后可以只在一个文件中定义const,而在其他多个文件中声明并使用它。

对常量的引用:不能用作修改它所绑定的对象。

指向常量的指针不能用于改变其所指对象的值,要想存放常量对象的地址,只能使用指向常量的地址:

const double pi = 3.14;

double *ptr = π错误

const double *cptr = π正确

*cptr = 42;错误

常量引用和指向常量的指针所指的对象不需要一定是常量。

常量指针:必须初始化,而且一旦初始化完成,则它的值(存放在指针中的那个地址)就不能再改变了

int erxn = 0;

int *const currern = &erxn;

顶层const可以表示任意的对象是常量,底层const则与指针和引用等复合类型的基本类型部分有关

int i = 0;

int *const pl = &i;不能改变pl的值,顶层const

const int ci =42;不能改变ci的值,顶层const

const int *p2 = &ci;允许改变p2的值,这是一个底层const

 

9.类型别名typedef 

别名声明 using SI = Sales_item;

 

10.auto让编辑通过初始值来推算变量的类型

auto一般会忽略掉顶层const

 

11.字符串字面值的类型实际上是有常量字符构成的数组,编译器在每个字符串的结尾处添加一个空字符('\0'),如果两个字符字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。

 

12.string

使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,不使用则是直接初始化。

getline读取一整行 getline(cin, line)

范围for语句:遍历给定序列中的每个元素并对序列中的每个值执行某种操作

for (delaration : expression)

  statement

&&:C++规定只有当左侧运算对象为真是才会检查右侧运算对象的情况

 

13.vector

不存在包含引用的vector

创建指定数量的元素 vector<string> sver(10,"hi!") 10个string类型的元素,每个都被初始化为"hi!"

push_back负责把一个值当成vector对象的尾元素"压到"vector对象的"尾端"

 

14.迭代器

for (auto it = s.begin(); it != s.end() && !isspace(*it); ++it)

  *it = toupper(*it)

const_iterator,能读取但不能修改它所指的元素值

 

15.sizeof运算符

返回一条表达式或一个类型名字所占的字节数

 

16.构造函数

没有返回值,不能被声明成const

在类外部定义构造函数:Sales::Sales的含义是定义Sales类的成员

struct关键字:定义在第一个访问说明符之前的成员是public的;class关键字:这些成员是private

 

17.shared_ptr类

shared_ptr允许多个指针指向同一个对象,unique_ptr则独占所指向的对象

创建智能指针时,必须提供指针可以指向的类型 shared_ptr<string> p1;

make_shared函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr

make_shared<ZuVoLog>("demo")

 

posted @ 2015-03-24 18:17  现役程序猿  阅读(122)  评论(0编辑  收藏  举报