我是C ++的新手,面对常量对象的问题。我已经声明了一个名为 function 的常量成员函数(并且据我了解到, constant函数只能由常量对象调用),但是这里的常规对象称为常量宾语。请解释为什么会这样。 代码在这里
myClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class myClass
{
public:
void function() const;
};
#endif
myClass.cpp
#include "myClass.h"
#include<iostream>
using namespace std;
void myClass::function() const{
cout<<"this is a constant object";
}
main.cpp
#include <iostream>
using namespace std;
#include "myClass.h"
int main() {
myClass obj;
obj.function();
return 0;
}
请帮助我。 谢谢
答案 0 :(得分:6)
这就是C ++的工作方式。可以在非const对象上调用const成员函数,因为const正确性不能以这种方式破坏。不能的是在const对象上调用非const成员函数。
请注意,如果您的非常量重载为function()
,则会调用该常量。
答案 1 :(得分:4)
据我了解,常量函数只能由a调用 常数对象
不!
反之亦然:
一个非const成员函数(例如,称为“ MF”)可以读取和修改对象,因此:
因此 const限定成员函数可以应用于任何对象;限制是这些const成员函数可以调用什么。