const 修饰成员变量、成员函数

结论:

1、非const成员函数可以调用const成员函数,const成员函数不能调用非const成员函数。
2、非const成员函数、const成员函数可以任意访问const成员变量、普通变量。
3、const对象只可以调用const成员函数,非const对象任意调用成员函数。
class Student {
public:
    Student();
    Student(char *name, int age, float score);
    void show();
    //声明常成员函数
    char *getname() const;
    int getage() const;
    float getscore() const;
private:
    char *m_name;
    const int m_age;
    const float m_score;
};

Student::Student():m_age(4), m_score(566){
    m_name = new char[1000];
    m_name = const_cast<char*> ("sfsfgg");
}
Student::Student(char *name, int age, float score) : m_name(name), m_age(age), m_score(score) { }
void Student::show() {
    getage();      //非const成员函数调用const成员函数 
    std::cout << m_name << "的年龄是" << m_age << ",成绩是" << m_score << std::endl;
}
//定义常成员函数
char * Student::getname() const {
    return m_name;
}
int Student::getage() const {
    show();//非const成员函数调用const成员函数 
    return m_age;
}
float Student::getscore() const {
    return m_score;
}

int main()
{
    const Student ss;  //const对象调用非const成员函数 
    ss.show();

    Student ss0;  //非const对象调用const成员函数 
    ss0.getscore();
}

 

原文地址:http://www.cnblogs.com/lovebay/p/16854493.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性