zoukankan      html  css  js  c++  java
  • C++ Primer总结

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

    2、同样的x要用到后面跟着的所有数字。x12346213

    3、变量只能定义一次,但是可以被多次声明。

    4、指针和引用的区别:

      1)引用是另一个对象的别名,而指针本身就是一个对象。

      2)引用必须初始化,并且一旦定义了引用就无法再绑定到其他对象。而指针无须在定义时赋初值,也可以重新赋值让其指向其他对象。

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

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

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

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

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

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

            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)

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

    11、局部变量不能作为默认实参。(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,  '*')

      } 

    12、封装的优点:

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

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

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

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

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

    16、如果往容器中调用insert(给定位置begin,值vec)函数,会在begin的位置之前插入值vec,并返回新增值位置。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    22、#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);

          

  • 相关阅读:
    xftp,winscp显示隐藏文件
    今日校园-打卡
    dungeon quest(又名暗黑遗迹,勇闯地下城等)装备体系简述
    frp转发
    虚拟机win10添加新磁盘
    JEECG(一) 如何配置自己的业务包
    C# 获取Url 请求方式 域名 端口 路径
    js url 参数 转换成 json 对象数据
    VisualStudio2017 远程 调试 IIS 服务器 web网站
    c# MVC Action 如何知道 发送方给你的 Json 数据的格式内容是什么
  • 原文地址:https://www.cnblogs.com/cwy-blog/p/8245514.html
Copyright © 2011-2022 走看看