zoukankan      html  css  js  c++  java
  • c++ Primer 第六章不熟悉知识点总结

    一、分离式编译

    分离式编译允许我们把程序分割到几个文件中去,每个文件独立编译。

    -c和-o都是gcc编译器的可选参数。-c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件。-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序。

    二、(1)使用引用参数,当我们的参数很大或者根本无法拷贝时(因为值参数需要将实参拷贝给形参)使用引用参数就很好的解决了这个问题,并且尽量去使用引用参数而不是指针参数。

    (2)使用形参返回额外信息

      其实就是在函数多加了一个形参,因为可以直接利用引用参数改变实参的值,所以在函数中我们可以把引用参数的值改变以达到改变实参的值。而获得函数中想要得到的值。

     1 int Temp(int &count, string &s)
     2 {
     3     auto temp = s.size();
     4     for (size_t i = 0; i != temp; i++)
     5     {
     6         s[i] = 'F';
     7         count++;
     8     }
     9     return count;
    10 }

    从这个函数中我们可以得到count的值和s的值。

    (3)、尽量使用常量引用,来避免一些不必要的错误。

    三、数组作为形参的时候,其实编译器把数组转化成了指针。数组也可以作为引用形参,但是应该注意是 sum(int (&temp)[5]){} ,而不是int &temp[5].

    四、含有可变形参的函数

    (1)、initializer_list形参

      如何函数的实参数量未知,而实参的数据类型相同,我们就可以用initializer_list。initializer_list定义在同名的头文件中。和vector一样,initializer_list也是一个模板,不一样的是initializer_list的元素永远是常量值。我们无法改变他的对象中元素的值。如果我们编写一个输出错误信息的函数:

    1 err_msg(initializer_list <string> msg)
    2 {
    3     auto temp = msg.begin();
    4     while(msg.end != temp)
    5    {
    6         cout << *temp << endl;
    7         ++temp;
    8    }
    9 }

    补充一点在for循环中的条件中,不管是++i还是i++,其结果都是一样的,而我们一般为了性能选择++i。因为i++会复制i的副本。

    五、返回类型和return语句

    return语句终止当前正在执行的函数并返回到调用该函数的后面。

    列表初始化返回值

     1 vector<string> msg()
     2 {
     3     if(expected.empty())
     4     {
     5          return {};
     6     }else
     7     {
     8          return {"functionX", expected};
     9     }
    10 }

    六、重载和顶层const

    一个拥有顶层const的形参无法和一个不含const区分开来

    int function(int const temp){}
    int function(int temp){}

     七、内联函数

    在我们定义的一个小、精简函数前面加一个inline,就变成了内联函数,内联函数可以优化我们的代码,避免函数调用的开销。注意的是很多编译器都不支持内联函数的递归。和其他函数不一样的是,内联函数一般定义在头文件中。

    inline const bool &result(string parameter1, string parameter2)
    {
        return parameter1 > parameter2 ? true : false;
    }
  • 相关阅读:
    迷茫之后的选择是理想
    Java 数组在内存中的结构
    Himi浅谈游戏开发de自学历程!(仅供参考)
    java+上传文件夹
    java+web+大文件上传下载
    http+断点续传
    浏览器上传大文件
    java大文件上传
    网页上传大文件
    php+大文件上传
  • 原文地址:https://www.cnblogs.com/xiaodangxiansheng/p/11380923.html
Copyright © 2011-2022 走看看