首页 > 编程语言 >c++ 之 const 修饰成员变量、成员函数

c++ 之 const 修饰成员变量、成员函数

时间:2022-11-03 15:14:51浏览次数:54  
标签:const name 成员 c++ score Student 函数

 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();
}

 

标签:const,name,成员,c++,score,Student,函数
From: https://www.cnblogs.com/lovebay/p/16854493.html

相关文章

  • C++浅拷贝与深拷贝
    ​目录 前言一、区别二、浅拷贝1.简单描述2.代码实例三.深拷贝1.简单描述2.代码实例 四.完整代码五.运行结果总结  前言C++中有两种拷贝:深拷贝和浅......
  • @RequiredArgsConstructor
    @RequiredArgsConstructor注解@RequiredArgsConstructor生成带有必需参数的构造函数。必需的参数是最终字段和具有约束的字段,例如@NonNull。完整的文档可在@lconstru......
  • C++ 反射机制
    前言反射的概念:指程序在运行时,访问、检测和修改它本身状态或行为的一种能力。wikipedia简单的来说,就是一种自描述和自控制的能力。如果联想到镜子,就可以很好的理解,你能通......
  • C/C++ 常识
    多态分为静态多态和动态多态1.静态多态:静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数就调用,没有的话就会发出警告或者......
  • 【c&c++】 cjson使用_Keil环境下Jansson解析库的使用——基于STM32F103
    前言之前我曾经写过几个JSON解析库的使用方法:Qt平台下使用QJson解析和构建JSON字符串使用cJSON库解析JSON使用cJSON库构建JSON对于嵌入式开发,比较常用的就是cJSON解析......
  • 转载文章 c++调用yolov4模型进行目标检测-使用yolov4官方接口
    前言yolo系列用c写的,在工程中的部署特别方便。4月份yolov4横空出世,之前试了试效果,精度确实有了很大的提升,AB大神nb。最近需要在C++项目中使用yolov4,尝试了opencv的调用(见......
  • 【c&c++】[C++]使用Jansson生成与解析json字符串
    安装配置序列化与反序列化生成Json解析JsonJansson是一个用于解码、编码、操控JSON的C库:简单直观的API和数据模型没有依赖项完整的Unicode支持(UTF-8)安装 ......
  • Java中“成员变量,局部变量,静态变量”三者区别说明
    转自:http://java265.com/JavaCourse/202111/1728.html下文笔者讲述java中成员变量,局部变量,静态变量的不同之处,如下所示: 成员变量局部变量静态变量定义位置......
  • C++语法
    C++常量和变量变量的定义方式:const类型名字{};直接使用值#define名字值常量定义方式:类型名字{};类型名字=初始值;不管是常量还是变量,本质都是在内存中申......
  • 第十三届蓝桥杯省赛C++B组
    《X进制减法》题目连接:https://www.acwing.com/problem/content/4407/贪心,数学推导  我们先来看一下这个65是如何算出来的:321:第一位为二进制,则逢2进1,ans+=1;......