美文网首页
C++学习(1)

C++学习(1)

作者: su945 | 来源:发表于2020-08-05 21:22 被阅读0次

1.引用

  • 引用,某个变量的别名,等价于这个变量,相当于这个变量的一个别名。
  • 概念:定义引用是一定要将其初始化成引用某个变量。
    初始化后,它就一直引用该变量,不会再引用别的变量。
    引用只能引用变量,不能引用常量和表达式。
//示例1:初始化为引用某个变量
    int n = 4;
    int & r = n; //r引用了n,r的类型是 int &
    r = 4;
    cout << r << endl; //4
    cout << n << endl; //4
    n = 5;
    cout << r << endl; //5
//示例2:引用作为函数的返回值
    int n = 4;
    int & SetValue() { return n; }
    int main()
    {
        SetValue() = 40;
        cout << n;
        return 0;
    }
//示例3:前加const关键字,即为“常引用”
    int n1;
    const int & n2 = n1;
    /*
    !!! 注意不能通过常引用去修改其引用的内容
    int n =100;
    const int &r = n;
    r = 200;  //编译出错
    n = 300;
    */

常引用和非常引用的转换
const T & 和 T & 是不同的类型
T & 类型的引用或T类型的变量可以用来初始化 const T &类型的引用。反过来则不可以这样操作。

2.const

  • 定义常量
    const int MAX_VAL = 23;
    const string SCHOOL_NAME = "Peking University";
  • 定义常量指针
    函数参数为常量指针时, 可避免函数内容不小心改变参数指针所指向地方的内容。
//不可通过常量指针修改其指向的内容
    int n,m;
    const int *p = &n;
    *p = 5; //编译出错
    n = 4;  //ok
    p = &m; //ok,常量指针的指向可以变化
    

//不能把常量指针赋值给非常量指针,反过来可以
    const int *p1;
    int *p2;
    p1 = p2; //ok
    p2 = p1; //常量不可以赋值给常量
    p2 = (int *)p1; //ok,强制类型转换
    
  • 定义常引用
    不能通过常引用修改其引用的变量
    int n;
    const int &r = n;
    r = 5; //error
    n = 4; //ok

3.动态内存分配

动态内存分配:用new运算符实现动态内存分配

  • 分配一个变量
    p = new T;

    T是任意类型名,P是类型为T*的指针,
    动态分配出一片大小为sizeof(T)字节的内存空间,
    并且该存储空间的起始地址赋值给P。

    int *pn;
    pn = new int;
    *pn = 5;
  • 分配一个数组
    P = new T[N];

    T:任意类型名
    P:类型为T的指针
    N:要分配的数组元素的个数,可以是整形表达式
    动态分配出一片大小为sizeof(T)
    N字节的内存空间,并且将该内存空间的起始地址赋值给P。

    int *pn;
    int i = 5;
    pn = new int[i*20];
    pn[0] =20;
    pn[100] = 30; //编译没问题,运行时导致数组越界

用delete运算符释放动态分配的数组

  • 用new动态分配的内存空间,一定要用delete运算符进行释放
    int *pn;
    pn = new int;
    *pn = 5;
    delete p;
    delete p; //导致异常,一片空间不能被delete多次

    //对于数组
    delect []指针; // 该指针必须指向new出来的数组
    
    int *pn = new int[20];
    pn[0] =20;
    delete [] p;

4.函数重载

  • 定义:一个或多个函数,名字相同,然而参数个数或参数类型不相同,这叫做函数的重载

  • 函数的缺省参数:
    C++中,定义函数的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候若相应位置不写参数,参数就是缺省值。

相关文章

  • C++语言的学习计划

    一、C++学习主要应该包括什么内容? C++学习主要包括: (1)对C++语言的了解、熟悉其程序的基本组成 (2)...

  • C++学习(1)

    1.引用 引用,某个变量的别名,等价于这个变量,相当于这个变量的一个别名。 概念:定义引用是一定要将其初始化成引用...

  • c++学习1

    今日任务:c++基础 学习内容总结: 1)面向过程程序:结构化程序设计(顺序、分支、循环),由函数组成。 2)面向...

  • C++_day01

    C++学习 1 C++初识 1.1 hello world system("pause")是使窗口暂停,不出现闪退...

  • C++学习笔记 day 1

    C++学习笔记 day 1 教学课程链接:bilibili 黑马程序员:C++从0到1入门编程[https://w...

  • C语言怎么会有这么变态的例子!速来围观!!!

    在学习C/C++或者想学习C/C++可以加群:775356268,大家一起学习交流 1.下面这个示例是C语言的痛,...

  • C语言与C++

    1、学习目的: 2、C语言和C++的区别变化: (1)C语言面向过程,C++面向对象 eg.上课: C:小王 走...

  • C++学习笔记1

    C++ Prime Plus Setting out to C++ C++ standard function h...

  • C++ 学习笔记(1)

    摘要:本文是我个人对C++语言的认识和看法,以及以后在学习C++语言中自己要去遵守的一些规范和学习思路,提出了一个...

  • C++学习日志(1)

    本博客内容源于geekband。 一.防卫式声明 其中。。部分是1.前置声明 2.类的声明 3.类的相关函数的定义...

网友评论

      本文标题:C++学习(1)

      本文链接:https://www.haomeiwen.com/subject/jgaorktx.html