棋牌游戏开发多少钱,群站优化之链轮模式,网页动态设计怎么做,wordpress与cms哪个好用友元的目的就是让一个函数或类访问另一个函数中的私有成员
友元函数
#xff08;1#xff09;普通函数作为友元函数
class 类名{friend 函数返回值类型 友元函数名(形参列表);//这个形参一般是此类的对象....
}
经过以上操作后#xff0c;友元函数就可以访问此类中的私有…友元的目的就是让一个函数或类访问另一个函数中的私有成员
友元函数
1普通函数作为友元函数
class 类名{friend 函数返回值类型 友元函数名(形参列表);//这个形参一般是此类的对象....
}
经过以上操作后友元函数就可以访问此类中的私有成员了下面举个例子
#include iostream
using namespace std;
#include string
class Person {friend int getMoney(Person person);
public:string name;
private:int money;
public:Person(string name, int money);
};
Person::Person(string name, int money) {this-name name;this-money money;
}
int getMoney(Person person) {return person.money;
}
int main() {Person person(张三, 10000);cout getMoney(person) endl;
} 其中声明了 int getMoney(Person person)作为友元函数访问了person类的私有成员money本例中通过调用友元函数getMoney访问张三的私有属性money。
普通函数作为友元函数访问了类中的私有成员且具有修改私有成员的权限
#############################################
(2)其它类的成员函数作为友元函数
其它类中的成员函数作为本类的友元函数时需要在本类中表明该函数的作用域并添加友元函数所在类的前向声明这个要稍微注意一下。
格式
class B; //A中的成员函数在类B中作为友元函数,要将B类声明在A类之前
class A{
public:int f();
}
class B{friend int A::f();//声明类A中的成员函数作为友元函数
}
这样A中的f()就可以访问B类中的所有成员如下示例
class Car;
class Person {
public:string name;
public:Person(string name);void f(Car car);
};
class Car {friend void Person::f(Car car);//声明友元函数
public:string name;Car(string name, string keyPassword);
private:string keyPassword;string getkeyPassword();
};
int main() {Car car(大众, 235fkw);Person person(张三);person.f(car);
} 本例中Person类的f()函数在Car类中成为友元函数f()访问了Car类的私有成员。
跟上面差不多没什么东西照葫芦画瓢就行了记住友元的目的就是让一个函数或类访问另一个函数中的私有成员再注意下格式就ok了。
#############################################
友元类
友元类可以声明在友元类之后友元类中的所有成员函数都是该类的友元函数能够访问该类的所有成员
格式
class B;
class A{};
classs B{friend class A;
}
示例也差不多就不制作学术垃圾了。。。
class Car;
class Person {
public:string name;
public:Person(string name);void f(Car car);
};
class Car {friend class Person;
public:string name;Car(string name, string keyPassword);
private:string keyPassword;string getkeyPassword();
};
最后使用友元应注意的几个问题
(1)友元声明位置由程序设计者自行决定且不受类中public,private,protected权限控制符的影响
(2)友元关系是单向的即类A是类B的友元但B不是A的友元
(3)友元关系不具有传递性即类A是类B的友元类C是类A的友元但类C不是类A的友元
(4)友元关系不能被继承