a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 61|回复: 0

[考试试题] c++中友元的一些总结(3)

[复制链接]
发表于 2012-7-31 21:53:42 | 显示全部楼层 |阅读模式
  3,模板类里的友元3 V4 p3 ?- L" ]! F
  模板类里也能申明2中的友元,但是模板类有模板参数,如果利用了这个模板参数的友元申明,就属这种情形。
" X6 L. W/ U; ?' I% h  template9 S; |. Q! W# [" m/ t. ~9 `* A/ v  Q
  class A
9 C" S4 U3 \4 p2 q  {1 a1 C: G) Z4 t- f5 v; v. d
  public:# ~8 R' S  r- R$ Q4 o& r0 t- F; G
  friend void foo1(T);
6 U9 X6 A6 ?, f6 h  };
* |) _, D9 c: [2 F  但是,在这里,必须要求foo1在这里是可见的,即不能是首次申明式。如果不使用模板参数,那会是一种有趣的情形。
; ?5 k& b3 P$ F  template
' @0 L: P. @8 g$ a- K6 ?  class A
  l. W. O& W3 r/ ?  {: ]3 E3 ^4 W' A* Y5 }
  public:
- L5 [7 f# W( b+ T3 D  friend void foo(){}* g9 T" {" t" V2 _: t
  };- E' }6 B) P* c" X1 o' Y
  注意这里是一个定义式,它定义了一个::foo()函数为该模板类的友元,在该模板类具现的时候,::foo()也被具现出来,即:  N1 _8 c% }5 e8 t4 y7 x3 f
  A a1;// ::foo()首次定义
! ~- K( y, g0 I) H& _& R% Y  A a2;// ::foo()第二次定义,违背C++一次定义原则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-19 22:49 , Processed in 0.447886 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表