//Student.h
#pragma once
class Student
{
int number;
double score;
public:
Student();
Student(int num, double grade) : number(num), score(grade) {}
~Student();
double Score() const { return score; } //const成员函数
int Number() const { return number; } //const成员函数
void ShowInfo(); //普通成员函数
friend int numOfMaxScore(Student arr[], int len);
};
//main.c
#include "pch.h"
#include <iostream>
int main()
{
const Student liu(20133, 555); //定义一个Student常量对象
liu.ShowInfo(); //常量对象调用普通成员函数是非法行为
liu.Number(); //常量对象调用const成员函数合法
return 0;
}
因为常量对象是不能被修改的,而成员函数“void ShowInfo()"的代码无法确保调用对象不被修改,因此常量对象不能调用普通成员函数(即使在成员函数中只是打印几个字符),因此需要声明const成员函数来保证成员函数不会修改调用对象。
只要类方法不修改调用对象,就应将其声明为const成员函数。
注:函数声明和定义都要在函数括号后面添加const。