C++判断题,如果错误,请说出原因~跪求答案,菜鸟级问题

类A有一个非静态的成员函数f,若其函数原型是:void A::f(const int& anInt),那么,该函数被调用时,形式参数anInt是实际参数的引用,不需要为它分配空间,并且在执行过程中,不会改变实际参数的数值。若把f的函数原型改变为:void A::f(int anInt),则形式参数anInt是实际参数的一个拷贝,该函数被调用时,需要为anInt分配空间,并用实际参数为它初始化。如果不考虑是否需要为参数anInt分配空间,并且,在f的函数体内没有对参数anInt进行任何数值改变的语句,则用这两种方式定义的函数f的作用是一样的。
2026年09月21日 12:08
有1个网友回答
网友(1):

对√。说明:
◇void A::f(const int& anInt),形参中的&表示引用,即实际调用不会创建形参空间;而const表示“常”,即调用时不允许改变实参。如果把这两个特殊的东西去掉,就只是传值调用,在被调函数中的参数anint只是实参的一个副本(拷贝),需要创建空间并用实参初始化。所以,最后一句之前都是正确的。
◇因为const的作用是禁止对实参进行修改,以引用方式(第一种方式)调用时,如果不对形参作修改,那么是实参是不会变的;这也是必须的,要不然因为const的原因,编译器会报错。而传值调用时不论对不对形参做修改,实参都是不变的。在不考虑是否为anInt分配空间的条件下,这两种方式的作用是可以一样的(函数体都实现相同的功能)。