本篇为博主在学习中遇到的问题,仅以此记录并供以后复习使用,同时希望能够帮助到有类似问题的同学。
一、同一个对象的类成员函数相互调用
如图所示,类成员函数fun2直接调用类成员函数fun,最终如果对象调用fun2则会输出fun1,证明能够如此调用。
二、参数是另一个对象的类成员函数,调用参数中对象的成员函数
1、首先第一种情况,如果是const 引用的情况
可以看到无法成功调用,报错信息指出将const 转化为&,权限扩大,因此无法调用,如果仍想这样调用,则需要对程序稍作修改。
具体修改方法有两种:
1、
class test {
public:
void fun() {
cout << '1' << endl;
}
void fun2(test& ano) {
ano.fun();
}
};
将const删除,这样就不会有权限扩大的问题
2、
class test {
public:
void fun() const {
cout << '1' << endl;
}
void fun2(const test& ano) {
ano.fun();
}
};
在被使用到的成员函数后面加const变为只读函数,而不改变类内成员的值,这样,也不会有权限扩大的问题,但是仅仅只有带const的只读函数能够被调用。