• const 相关知识 const和指针、const和引用


    以前老是对const概念不清不楚,今天算是好好做个笔记总结一下。以下内容包括1)常量指针(指针本身是常量),2)指针常量(指针指向的是常量对象),3)常量引用,4)const成员函数。

    常量指针,指针是一个常量,常量指针必须初始化,而初始化一旦完成,也就是存放在指针中那个地址不能再改变了

    指针常量,意思是指针指向的是一个常量对象。

    int *const curErr;从右往左读,const curErr是一个常量对象,*const curErr 是一个常量指针,int *const curErr 解释:常量指针指向i的是一个int型对象。

    1)常量指针想要改变其指向的对象是会报错的!

    常量指针示例

     2)指针常量想改变指向对象的值时会对指针进行解引用,而这一过程相当于对常量对象做赋值操作,会报错!

    指针常量示例:

     

    3)const的引用

     与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象。

     注:对const的引用我们一般称为常量引用,但请记住,引用不是对象。

    对常量引用和指针常量做一个比较和总结:

    指针常量和常量引用一样,指向常量的指针也没有规定其所指的对象必须是一个常量。所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其它途径改变。

    4)const成员函数 

    const在类成员函数中还有种特殊的用法,把const关键字放在函数的参数表和函数体之间,称为const成员函数,其特点有二:

    1)只能读取类数据成员,而不能修改之。

    2)只能调用const成员函数,不能调用非const成员函数。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class point
     5 {
     6     int x; //默认为private的数据成员x和y
     7     int y;
     8 
     9 public:
    10     point(int xp = 0, int yp = 0) //构造函数
    11     {
    12         x = xp;
    13         y = yp;
    14     }
    15 
    16     void print() const //const成员函数内无法修改数据成员,否则编译器报错
    17     {
    18         x = 5; //1. 试图修改x将引发编译器报错
    19         set(); //2. 试图调用非const函数将引发编译器报错
    20         cout << "x: " << x << " ,y: " << y << endl;
    21     }
    22 
    23     void set() //将set()定义成const函数就能解决问题
    24     {
    25     }
    26 };
    27 
    28 int main()
    29 {
    30     point pt;        //声明类对象,以缺省参数形式调用构造函数
    31     pt.print();        //调用const成员函数
    32 
    33     return 0;
    34 }
  • 相关阅读:
    大数据学习路线图 让你精准掌握大数据技术学习
    在AI人工智能中如何巧妙学习大数据编程,成为五十万年薪的佼佼者
    大数据学习之Hadoop快速入门
    大数据学习|小白学习大数据需要满足这六个条件你就能学好大数据
    大数据学习路线(自己制定,从零开始)
    大数据学习之路(跟着大神学习一波)
    为什么这么多人学习大数据?新手该如何上手大数据?
    大数据学习路线图 让你精准掌握大数据技术学习?
    [监督学习]GDA 高斯判别分析
    The Josephus problem
  • 原文地址:https://www.cnblogs.com/Hwangzhiyoung/p/8595883.html
Copyright © 2020-2023  润新知