友元函数 friend

一、一个类的成员函数有三个互不相干作用

1.可以通过类的成员方法,访问它的私有数据。

        2.该函数的作用域在类中。

        3.在外部调动该函数必须通过成员访问符访问,也就是必须经由一个对象去激活(有一个this指针)。

二、友元函数

1.友元函数作用域不属于类的作用域,不是类的成员,也就不是类的方法,不受公有、私有、保护限制。

2.友元函数可以在类中实现,也可以在类外实现(一般是在类的外部实现)。

3,声明成友元函数,可以通过友元函数实现对类的私有数据进项访问。(但是他没有this指针)

4.一般友元函数声明在类的最前面

5.友元函数是为另外一个类的成员方法,则其作用域为另外一个类的作用域。

6.友元类,在一个类中声明为友元类,则该友元类都可以访问他的私有数据

在类的外部实现,也可以在内部实现

三、输出运算符<<、输入运算符>>的重载

我们平时可以用流 std::cout<<str<<n ; std::cin>>str>>n ; 输出、输入字符串和整型等内置类型的值。但是对于我们自定义的类,比如 Student 类,却不能直接通过 cout<<Student 或 cin>>Student 这样的形式来输出类的内容或给类赋值。怎么办呢?我们可以通过重载输出、输入运算符,让自定义的类也支持这样的操作。

1.在引入iostream头文件,标准的命名空间的后,ostream 输出流(类),其中cout是它的一个对象, istream输入流对象,cin是它的一个对象。

2.输入输出流对象一般只是对内置类型进行输出,对对象的输出要进行运算符的重载

3.输入、输出运算符的重载,一般通过友元函数,进行实现,友元函数可以访问一个类的私有数据,通过友元函数可以实现对类的输出;

       在类中声明成友元函数才能访问私有数据

  这样的话调动cout<<c<<endl;就可以对对象进行输出

4.输入输出运算符的重载也可以是类的成员方法,在类的内部实现,只不过输出格式比较诡异通过类的对象调动cout对象 c<<cout;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值