我了解到
假设,非常对象可以调用常成员函数function_A
type function_A() const {
}
相当于
tpye function_A (const T * this) //相当于给每个参数添加const
{
function_B(); //function_B和function_A都是同一个类的成员函数
// 调用function_B时,function_B实际为 type function(T * this)
//给function_B中传递的this实际为function_A中用const修饰的this,
//从而造成了常对象调用非常成员函数function_B(),所以产生了问题。
}
求解答,这只是猜想,求权威解答,证据最重要。谢谢
C++ 为什么常成员函数不能调用非常成员函数原理
答案:2 悬赏:30
解决时间 2021-03-20 20:25
- 提问者网友:心裂
- 2021-03-20 16:38
最佳答案
- 二级知识专家网友:开心就好
- 2021-03-20 16:50
常成员函数调用非常成员函数,返回值可能是非const的,与常常成员函数冲突,个人想法,不 喜勿喷
全部回答
- 1楼网友:有钳、任性
- 2021-03-20 18:07
函数声明,只是告诉下面的程序有这样的一个函数存在,函数定义就是实现这个函数的功能,如果在用到这个函数进行定义,就可以不用函数声明了,
举个例子:
void fun(); //这里就是函数声明,
void main();
{
fun(); //要使用fun这个函数,因为前面个声明,所以编译器会往下找,如果前面没声明的话,就会报错
}
void fun() //这里就是函数定义,功能就是打印一个字符串
{
printf("hello");
}
也可以不要声明,在使用前面直接定义,如下:
void fun() //这里就是函数定义,功能就是打印一个字符串
{
printf("hello");
}
void main();
{
fun(); //因为前面有定义,所以不会报错
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯