生活资讯
友元函数 、友元函数必须在类外定义吗
2023-04-20 01:58  浏览:36

友元函数怎样调用 友元函数的调用语法

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属性就是只读 的,而不能进行赋值

关于友元函数和友元函数必须在类外定义吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发表评论
0评