谭浩强-《C++面向对象》读书笔记6

本文深入探讨了C++中的友元概念及其应用,包括如何在类中声明友元函数,以及如何通过类模板实现类型泛型编程。同时介绍了类模板的使用方法、作用域限制以及友元关系的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

友元

C++以关键字friend声明。友元可以访问与其有友好关系的类中的私有成员。

1.       在一个类中声明友元函数

 friend void get ();

2.       在另一个类中声明友元函数

 class  Date; //对Date类的提前引用声明,因为下面Time类要引用

clsaa  Time

{….

Void display (Date &);//display是成员函数,形参是Date类对象的引用

}

class Date  //类体,前面的只是类名

{

friend void Time::display(Date &);//声明Time中的display为友元函数

};

 

友元类

声明友元类:

friend 类名

在A类的定义体中用下面语句声明B类为其友元类:

friend B;//B类中的所有函数可以访问A类中的所有数据成员

(1)       友元的关系式单向的而不是双向的。

(2)       友元关系不传递

 

类模板

(1)       先写一个实例的类

(2)       将此类中准备改变的类型名该用一个自己指定的虚拟类型名

(3)       在类声明前加上一行格式为

 template <class 虚拟类型参数>

如template <class numtype>  //没有分号

  class Compare     //Compare为类模板名

  {}  ;    //类体

(4)              模板定义对象时用以下形式:

类模板名 <实际类型名>对象名 ;

类模板名 <实际类型名>对象名(实参表列) ;

如:Compare <int> cmp (3,7);

(5)如果在类模板外定义成员函数,应写成类模板形式:

template <class 虚拟类型参数>

函数类型  类模板名 <虚拟类型参数>::成员函数名 (函数形参表列){。。。}

说明:

(1)       模板的类型参数可以有多个,每个类型前加class,如

template <class T1, class T2>

定义对象是:someclass <int, double> obj ;

注意:要注意模板的作用域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值