友元函数怎样调用 友元函数的调用语法
1、友元函数的调用可以直接调用友元函数,不需要通过对象或指针。
2、语法:
#include #include using namespace std;//友元函数class cFriend{private: int va; int vb;public: cFriend() { va = 0; vb = 0; } cFriend(int a,int b) { va = a; vb = b; } ~cFriend() { cout 执行结束!!! endl; } void set_va(int a) { va = a; } void set_vb(int b) { vb = b; } void disp(); friend void oneline_disp(cFriend dt);};void cFriend::disp(){ cout 成员函数调用: endl; cout va = va endl; cout vb = vb endl;}void oneline_disp(cFriend dt){ cout 友元函数调用: endl; cout va = dt.va endl; cout vb = dt.vb endl;} int main(){ cFriend data1(4, 5); data1.disp(); oneline_disp(data1); cFriend data2; oneline_disp(data2); return 0;}
友元函数有什么作用?
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。 一个函数可以是多个类的友元函数,只需要在各个类中分别声明。 友元函数的调用与一般函数的调用方式和原理一致。
拓展资料:
使用说明
1、友元函数是类外函数,声明可以放在类的私有或者公有,且都没有区别;
2、直接调用友元函数不需要通过对象或者指针;
3、友元函数没有this指针,且不能被继承;
4、友元函数声明形式 friend + 普通函数声明。
参考资料:友元函数
什么是友元?它的作用有哪些?什么是友元函数和友元类
友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。
举个通俗的例子吧,
一个家庭,对一般的访客开发的是客厅,厨房等,但卧室这样的私人地方一般访客是***止访问的,而好朋友
就可以进去了,
C++中基类的友元函数是否可以被派生类继承
友元函数是不可以继承的,也就是说基类A的友元函数,并不能被继承到其派生类B中,也就是说A的友元函数不能访问B中自己所增加的成员(但是请注意,是不能访问B中新增加的成员,但是还可以访问B中的基类的成员的)。
普通类的友元函数,可以访问类的所有成员:
#include iostream
class A{
friend void printElement(const A a);
public:
A(int theElement):element(theElement){}
void print(){std::coutelementstd::endl;}
protected:
int element;
};
void printElement(const A a){
std::couta.element;
}
这个printElement友元函数是可以访问类A中的所有成员的,这是最简单的一种友元关系。
扩展资料:
模板基类和模板派生类中的友元关系: 模板派生类的友元函数可以访问模板基类中的成员函数,但是访问的时候注意加上模板基类的类作用域解析符
templatetypename T
class A {//没有乱码
public:
A(int theElement):element(theElement){}
void print(){std::coutelementstd::endl;}
protected:
int element;
};
templatetypename T
class B : public AT{
templatetypename C friend void printElement(const BC a);
public:
B(int theElement):AT(theElement){}
void print(){
AT::print();
}
};
templatetypename T void printElement(const BT a){
std::couta.AT::element;
//一定要注意,使用模板基类中的成员的时候一定要加上基类的类作用域解析符!!!!
}
int main()
{
Bint b(100);
b.print();
//A a(1000);
std::cout "Hello world" std::endl;
std::cout"n";
printElement(b);
return 0;
}
友元函数的关键字是
friend。关键字friend。友元函数是一种特殊的函数,它需要在类体内进行说明,可以访问类的私有成员和保护成员,但又不是类的成员函数。其中,friend是说明友元函数的关键字,友元声明可以出现在类中的任何地方。
什么是C#中的友元函数?友元函数怎样使用?
c++中友元函数提高了效率,会破坏类的封装性;作用就是,指定的接口函数可以让友元类直接访问;复杂的封装过程中还是很有用的
C#中就不存在了,可以用internal实现类似友元的工能,类如
A,B两个类在同一个代码文件中定义
public class A
{
string _name = "";
public string Name
{
internal set{_name = value;}
get{return _name;}
}
}
在B类中就可以这样操作
A a = new A();
a.Name = "名字";
在其他地方进行使用时,A类的Name属性就是只读 的,而不能进行赋值
关于友元函数和友元函数必须在类外定义吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。