不带参数的朋友函数不起作用的原因是因为在函数定义时没有指定参数,导致在函数调用时无法传入实际的参数值,从而无法执行函数体内的逻辑。
朋友函数是指在类的外部定义的非成员函数,但可以访问类的私有成员。在C++中,朋友函数可以通过在类的声明中使用关键字"friend"来声明,并在类的外部进行定义。
当朋友函数不带参数时,函数定义中没有形参,因此在函数体内无法获取任何实际的参数值。这意味着函数体内无法使用任何参数进行计算、判断或其他操作,导致函数无法正常工作。
为了解决这个问题,可以通过在函数定义时添加参数,以便在函数调用时传入实际的参数值。参数可以是任意类型的变量,根据函数的具体需求进行定义。通过传入参数,函数可以获取实际的数值或对象,并在函数体内进行相应的操作。
举例来说,假设有一个朋友函数addNumbers,用于计算两个数的和。如果不带参数定义该函数,则无法获取任何实际的数值进行计算。但如果定义为带参数的函数,可以在函数调用时传入两个数的值,使函数能够正确计算并返回结果。
以下是一个示例代码:
class MyClass {
private:
int num;
public:
MyClass(int n) {
num = n;
}
friend int addNumbers(MyClass obj1, MyClass obj2); // 声明朋友函数
};
int addNumbers(MyClass obj1, MyClass obj2) {
return obj1.num + obj2.num;
}
int main() {
MyClass obj1(5);
MyClass obj2(10);
int sum = addNumbers(obj1, obj2); // 调用朋友函数并传入参数
return 0;
}
在上述示例中,朋友函数addNumbers被声明为MyClass类的朋友函数,并在类的外部进行定义。该函数接受两个MyClass对象作为参数,并返回它们的和。在main函数中,创建了两个MyClass对象,并将它们作为参数传递给addNumbers函数进行计算,最后将结果存储在sum变量中。
需要注意的是,朋友函数的定义和调用与类的成员函数不同,不需要使用成员访问运算符"->"或"."来调用。而是直接使用函数名进行调用,并传入相应的参数。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅为示例,具体的产品和解决方案选择应根据实际需求和情况进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云