C++ Primer总结

一、若是反斜杠\后面跟着的八进制数字超过3个,只有前3个数字与\构成转义序列。例如\123app

二、一样的\x要用到后面跟着的全部数字。\x12346213函数

三、变量只能定义一次,可是能够被屡次声明。this

四、指针和引用的区别:spa

  1)引用是另外一个对象的别名,而指针自己就是一个对象。指针

  2)引用必须初始化,而且一旦定义了引用就没法再绑定到其余对象。而指针无须在定义时赋初值,也能够从新赋值让其指向其余对象。对象

五、getline(cin, word)函数遇到空格符不会中止,输入一行数据,即遇到换行符结束,字符串word不包括换行符。ci

六、string a("hello");  for (auto &c, str);  意思是循环遍历字符串a的每一个字符。存储在c中,自动初始化为下一个字符。作用域

七、vector和string对象的下标运算符可用于访问已存在的元素,而不能用于添加元素。字符串

八、int   &val  =  10;  (错误,引用只能绑定在对象上,而不能与某个字面值或表达式的计算结果绑定在一块儿)get

   const   int  val = 10;  (正确,容许一个常量引用绑定很是量对象、字面值、甚至是个通常表达式) 

九、重复声明例子(错误):

        Record lookup(Phone a)                               

        Record lookup(const Phone a)                            

 

        Record lookup(Phone *a)  

        Record lookup(const Phone a)   

        

        Record lookup(Phone &a)

        Bool lookup(const Phone a)

  对于接受指针或引用的函数来讲,对象是很是量仍是常量对应的形参不一样。(构成重载)

        Record lookup(Account &a) 

        Record lookup(const Account &a)      

 

        Record lookup(Account *a)

        Record lookup(const Account *a)

十、声明函数时,一旦某个形参被赋予了默认值,那么它以后的形参都必需要有默认值。

十一、局部变量不能做为默认实参。(static静态数据成员一样不能做为默认实参)

  sz   wd  =  80;    char  def  =  '  ';        sz =  ht();

  string   screen(sz  =  ht();   sz =  wd;    char  =  def);

  void   f2()

  {

    def  =  '*';         //改变了默认实参的值

    sz   wd  =  100;       //隐藏了外部定义的wd,可是没有改变默认值,由于是新建立的局部变量,没法改变默认值。

    window   =  screen();    //调用screen(ht(),   80,  '*')

  } 

十二、封装的优势:

  一、确保用户代码不会无心间破坏封装对象的状态。

  二、被封装的类的具体实现细节能够随时改变,而无需调整用户级别的代码。

1三、一个const成员函数若是以引用的形式返回*this,那么它的返回类型将是常量引用。

1四、关联容器(与顺序容器的本质区别在于:关联容器是经过键(key)存储和读取元素的,而顺序容器则经过元素在容器中的位置顺序存储和访问元素。 

1五、在顺序容器中能够用c.front()和c.back()分别以返回引用的形式访问容器的头元素和尾元素。(注意使用前须要检验容器是否为空,即 !c.empty())。

1六、若是往容器中调用insert(给定位置begin,值vec)函数,会在begin的位置以前插入值vec,并返回新增值位置。

  而erase()函数则是返回擦除元素的下一位迭代器。

1七、s.substr(pos, n)返回一个string,包含s中从pos开始的n个字符的拷贝。

  s.append("good")将“good”追加到字符串末尾。

  s.replace(pos, n,  “good”)把字符串s中的pos位置开始的3个字符替换成候选字符串“good”。

1八、拷贝初始化发生的条件:

  a.咱们在使用=号定义变量时。

  b.将一个对象做为实参传递给一个非引用类型的形参

  c.从一个返回类型为非引用类型的函数返回一个对象

  d.用花括号列表初始化一个聚合类中的成员

  e.初始化标准容器库或调用其insert()或push_back()函数。

1九、在一个构造函数中,成员的初始化是在函数体执行以前完成的,且按照成员在类中出现的顺序进行初始化。

  在一个析构函数中,首先执行函数体,而后销毁成员。成员按照初始化的顺序逆向销毁。

20、当指向一个对象的引用或指针离开做用域时,析构函数不会执行。

2一、StrblobPtr& operator++();                            前置运算符,返回对象的引用

  StrblobPtr  operator++(int);        后置运算符返回对象的值。(int 用来区别前置和后置运算符)

2二、#define  swap(x,y)\                              swap(x,y)\

      x = x^y;\          (x) = (x) + (y);\

      y = x^y;\             (y) = (x) - (y);\

      x = x^y;            (x) = (x) - (y);

相关文章
相关标签/搜索