c语言的友元函数的用法 c++友元函数的作用

友元函数有哪些特点?友元函数和友元类: 通过友元,一个普通函数或类的成员函数可以访问另一个类的私有数据成员 。友元分为友元函数和友元类,关键字friend放在函数名之前,该函数就是友元函数 , 放在类名之前,该类就是友元类 。友元声明在公有部分还是私有部分都不影响它的使用 。一个函数可以被多个类声明为友元这样就可引用多个类中的私有数据 。友元的关系是单向的,不是双向的 。友元关系不能传递 。给个例子:
#includeiostreamusing namespace std;//#includetime.hclassTime{public:Time(int,int,int);friend void display(Time );////////友元函数的声明private:int hour,minute,second;};
Time::Time(int h,int m,int s){hour=h;minute=m;second=s;}
void display(Time t){coutt.hour":"t.minute":"t.secondendl;}
int main(){Time t1(10,18,55);display(t1);system("pause");return 0;}
什么是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属性就是只读 的,而不能进行赋值
C++中基类的友元函数是否可以被派生类继承友元函数是不可以继承c语言的友元函数的用法的c语言的友元函数的用法,也就是说基类Ac语言的友元函数的用法的友元函数,并不能被继承到其派生类B中,也就是说Ac语言的友元函数的用法的友元函数不能访问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;
}
什么叫友元函数?友元函数和友元类
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口 。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数 。除了友元函数外,还有友元类 , 两者统称为友元 。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销) , 但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员 。

推荐阅读