zoukankan      html  css  js  c++  java
  • C++语言基础(6)-const 关键字

    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量、成员函数以及对象。

    一 const 成员变量

    const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过参数初始化表

    二 const 成员函数

     const 成员函数可以使用类中的所有成员变量,但是不能修改成员变量,这种措施主要还是为了保护数据而设置的。const 成员函数也称为常成员函数

    常成员函数需要在声明和定义的时候在函数头部的结尾都加上 const 关键字,如:

    class Student{
    public:
        Student(char *name, int age, float score);
        void show();
        //声明常成员函数
        char *getname() const;
        int getage() const;
        float getscore() const;
    private:
        char *m_name;
        int m_age;
        float m_score;
    };
    
    Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
    void Student::show(){
        cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
    }
    //定义常成员函数
    char * Student::getname() const{
        return m_name;
    }
    int Student::getage() const{
        return m_age;
    }
    float Student::getscore() const{
        return m_score;
    }

    三.const对象

    一旦将对象定义为const 对象之后,不管是哪种形式,则该对象就只能访问被 const 修饰的成员了(包括 const 成员变量const 成员函数),因为非 const 成员可能会修改对象的数据(编译器也会这样假设),C++禁止这样做。

    例:

    #include <iostream>
    using namespace std;
    
    class Student{
    public:
        Student(char *name, int age, float score);
    public:
        void show();
        char *getname() const;
        int getage() const;
        float getscore() const;
    private:
        char *m_name;
        int m_age;
        float m_score;
    };
    
    Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
    void Student::show(){
        cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
    }
    char * Student::getname() const{
        return m_name;
    }
    int Student::getage() const{
        return m_age;
    }
    float Student::getscore() const{
        return m_score;
    }
    
    int main(){
        const Student stu("小明", 15, 90.6);
        //stu.show();  //error
        cout<<stu.getname()<<"的年龄是"<<stu.getage()<<",成绩是"<<stu.getscore()<<endl;
    
        const Student *pstu = new Student("李磊", 16, 80.5);
        //pstu -> show();  //error
        cout<<pstu->getname()<<"的年龄是"<<pstu->getage()<<",成绩是"<<pstu->getscore()<<endl;
    
        return 0;
    }
  • 相关阅读:
    Python os 模块
    Python sys 模块
    [SAP BASIS]How to kill process in SAP ?
    linux lsof 详解
    [ORACLE] Oracle 索引失效总结
    [SAP BASIS] [TMS] 更改 Backup-Domain-Controler as Domain Controller|将TMS备用域控制器改为主域控制器
    python 生产者消费者模型
    Python 多线程
    python queue 模块
    [Linux]ipcs,ipcm 命令详解
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/7060213.html
Copyright © 2011-2022 走看看