• C++入门学习笔记


    1、命名空间

            我个人的理解,当有几个cpp文件同时在编写时,可能会遇到共同定义使用同一个名字的情况,在平级调用时,可能就会报错。但是如果这样的话,语法不支持一个名字被定义两次。因此,C++使用命名空间来解决这个问题。

            在一个C++文件中,我们所写的一个函数,他有一个作用域,和生命周期,作用域内的变量出了作用域就会销毁。因此,每一个函数等中的变量相同,是可以的,因为它出了函数就销毁了。而命名空间是一个域,它没有生命周期。冒号:就是命名空间解释符号,意思是往前寻找那个空间里的相应定义。

            如此我们就可以解释开头写的那句:using namespace std;这句代码的含义了。

    它是指在  std是标准库中的命名空间的名字,那些标准库中的定义就放在这个空间中。

    但是呢在实际应用中,我们还是最好只是部分展开就好。比如:

    1. using std::cout;
    2. using std::cin;

    2、输入和输出

            C++是兼容c的,因此我们可以使用C语言的输入和输出的,但是使用C++的输入和输出也是很方便的。 

    输出:cout<<内容<>内容;

    cout能够识别输出内容的类别,不需要我们设定类型。

    3、缺省参数

            在我们传递参数时,在函数那里对应的形参可以设置初始值,这样方面我们有时忘记传值,但是也不会犯错。但是也要注意几个点,一、形参的值不能跳跃设置,必须从右往左。二、缺省参数不能在函数声明和定义时同时出现。三、缺省参数只能是常量或者全局变量。

    1. int Add(int x = 5,int y = 6)//全缺省
    2. {
    3. return x+y;
    4. }
    5. int Add(int x,int y = 6)//半缺省
    6. {
    7. return x+y;
    8. }

    4、函数重载

            我们在写函数时,可能一个函数的实现一样,但是返回值不一样,也可能实现一样但是,参数的类型不一样,因此会构成重载函数。重载函数是使用同一个名字,但是形参列表(参数个数 或 类型 或 类型顺序)不一样。

    1. int Add(int x,int y){}
    2. int Add(int x){}
    3. int Add(int x,double y){}
    4. double Add(double x,int y){}

    实际上,编译器将每一个重载函数都使用一定的方法来标记,以便于调用时正确使用。

    5、引用

    引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。

    类型&+引用变量名 =引用实体

    引用的特性:

    1.引用在使用时,必须初始化

    2.当引用了一个实体后,不能再引用另一个实体

    3.一个变量可以多个引用

    引用可以做参数,可以做返回值。

    1. int Swap(int& x,int& y){
    2. int temp = x;
    3. x = y;
    4. y = temp;
    5. }

    6、内联函数

    以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。

    内联函数是C++对宏的改进。

    注意:内联函数不建议定义和生命分开,否则可能会发生链接错误。

    7、auto关键字

    我的理解是auto可以自动识别类型,从而省去我们很多的时间。特别是在一些类型的名称特别长的情况下,尤其好用。

    1. int a = 10;
    2. auto b = a;
    3. int* x = &a;
    4. aotu* y = &a;

    auto的使用,需要初始化。同时,它也是占位符,在编译阶段,会赋予实际的类型。

    在引用时,auto后必须加&符号,同时在auto同一行的类型需要一样。它也不能用作参数,和数组

    8、范围for的使用

    1. int arr[] = {1,2,3,4,5};
    2. for(aotu x:arr)
    3. {
    4. cout<<x<<' ';
    5. }

    冒号前面是迭代的变量,后是迭代的范围。

    注意:数组的范围是确定的才可用

    9、指针空值nullptr

    1. void f(int)
    2. {
    3. cout<<"f(int)"<
    4. }
    5. void f(int*)
    6. {
    7. cout<<"f(int*)"<
    8. }
    9. int main()
    10. {
    11. f(0);
    12. f(NULL);
    13. f(nullptr);
    14. return 0;
    15. }

    这段代码中,f(0)和f(NULL)的调用的函数是一样的。所以使用nullptr来解决。

  • 相关阅读:
    “顾客第一”的理念在地方政府仍然适用
    【Web】PHP反序列化的一些trick
    Python中的super函数,你熟吗?
    ENVI IDL:对于GEOTIFF结构体的说明
    Sip多按键对讲分机,洁净室专用对讲终端
    面试题 | 记录面试时碰到的一道多线程题目
    Redis笔记--手写版
    Google Earth Engine(GEE)——核函数应用
    【力扣算法简单五十题】06.X的平方根
    Weakmap详解
  • 原文地址:https://blog.csdn.net/qq_61638928/article/details/132838234