可以两个类共享一个好友功能
Can 2 classes share a friend function?
今天我对friend函数有一个疑问。两个类可以有相同的友元函数吗?举个例子friend void f1();
在A类和B类中声明。这可能吗?如果是,函数f1()是否可以访问两个类的成员?
一个例子可以最好地解释这一点:
class B; //defined later
void add(A,B);
class A{
private:
int a;
public:
A(){
a = 100;
}
friend void add(A,B);
};
class B{
private:
int b;
public:
B(){
b = 100;
}
friend void add(A,B);
};
void add (A Aobj, B Bobj){
cout << (Aobj.a + Bobj.b);
}
main(){
A A1;
B B1;
add(A1,B1);
return 0;
}
希望这能有所帮助!
什么函数可以或不能是class
的friends
没有限制,所以是的,这没有问题。
对上述代码的更正
#include<iostream>
using namespace std;
class B; //defined later
class A; //correction (A also need be specified)
void add(A,B);
class A{
private:
int a;
public:
A(){
a = 100;
}
friend void add(A,B);
};
class B{
private:
int b;
public:
B(){
b = 100;
}
friend void add(A,B);
};
void add (A Aobj, B Bobj){
cout << (Aobj.a + Bobj.b);
}
main(){
A A1;
B B1;
add(A1,B1);
return 0;
}
#include<iostream>
using namespace std;
class first
{
friend void getdata(first object1, int i);
};
class second
{
friend void getdata(second object2, int j);
};
getdata(first object1, int i, second object2, int j)
{
cout<<i+j;
}
main()
{
first object1;
second object2;
getdata(object1, 5, object2, 7);
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 有没有可能有一个只有ADL才能找到的非好友功能
- 如何使模板化类成为另一个模板化类的好友
- 覆盖作为另一个类的好友的虚拟受保护方法
- 当我将一个类声明为其他类的成员时出现错误。 错误:声明好友时必须使用类键
- 为什么我不能使这个成员函数成为另一个类的好友?
- 无法将一个类的方法定义为另一个类的好友
- 给定一个类及其友元类,后者的内部类是否自动成为前一个类的好友?
- 可以两个类共享一个好友功能
- 在c++中,如何将静态函数与另一个类建立好友关系