• 关键字const


    修饰普通变量

    变量是常量,不可变(两种写法一样)
    const int data=100;
    int const data=100;
    //data=200;//error
    

    修饰指针

    指针是常量,不可变
    int* cosnt ptr;
    指针指向的内容是常量,不可变
    const int* ptr;
    指针和指针指向的内容都是常量,不可变
    const int* const ptr;
    
    void TestConstPtr() {
        int data_1=100;
        int data_2=200;
    
        int* const ptr_1=&data_1;
        //ptr=&data_2;//error
        *ptr_1=300;
        
        const int* ptr_2=&data_1;
        ptr_2=&data_2;
        //*ptr_2=300;//error
    
        const int* const ptr_3=&data_1;
        //ptr_3=&data_2;//error
        //*ptr_3=100;//error
    }
    

    const修饰类变量,类函数

    1 const类成员变量只能在初始化列表中初始化
    2 const类成员函数,不能修改任何类成员变量。只能调用const的类成员函数,不能调用非const的类成员函数
    
    class A
    {
        int data_1;
        const int data_2;
    public:
         A()
         :data_2{200}//在初始化列表中进行const变量初始化
         {
            data_1=100;
            //data_2=200;//error:const变量只能在初始化列表中初始化
         }
    
        ~ A() {
            std::cout<<__FUNCTION__<<std::endl;
        }
    
        void show() {
            std::cout<<__FUNCTION__<<":";
            func();
            func_const();
        }
    
        void show_const() const {
            std::cout<<__FUNCTION__<<":";
            //func();//eroor:const函数只能调用const函数,不能调用非const函数
            func_const();
            //data_1=300;//error:不能修改类变量
        }
    
    private:
        void func() {
            std::cout<<__FUNCTION__<<std::endl;
        }
    
        void func_const() const {
            std::cout<<__FUNCTION__<<std::endl;
        }
        
    };
    

    const修饰类对象,类对象指针,类对象引用

    const修饰的类对象、类对象指针、类对象引用只能访问类的const成员函数,不能访问非const成员函数
    
    void TestConstClass() {
        const A ac;
        //ac.show();//error
        ac.show_const();
    
        const A* ptr_Ac=new A();
        //ptr_Ac->show();//error
        ptr_Ac->show_const();
    
        const A& ac_1=ac;
        //ac_1.show();//error
        ac_1.show_const();
    }
    
  • 相关阅读:
    oracle数据库中的单行函数
    Oracle数据库的基本语句
    oracle数据库安装的注意事项
    第一个自动化脚本
    负载均衡__笔记
    计算机名词解释
    开发规范__笔记
    索引_笔记
    主从复制_笔记
    Eclipse Git和sourceTree用法
  • 原文地址:https://www.cnblogs.com/smallredness/p/11064503.html
Copyright © 2020-2023  润新知