friend声明

先看一个例子:

  - file1.cpp
namespace  ns1
{
        
class Test
        
{
                friend 
void func();
        }
;
}


int  main()
{
        ns1::func();
}


- file2.cpp
#include <cstdio>
using namespace std;

namespace  ns1
{
    
void func()
    
{
        printf(
"func in %s ", __FILE__);
    }

}
 

按照BS在《C++程序设计语言》(11.5节)的说法,一个友元不应给其外围作用域内引入一个名字。

然而,在"C++ Primer"(第4版, 12.5节)的说法,一个友元会在其外围名字空间域内声明了一个名字。

上面那个例子, VC++ 2005和MingW(gcc 3.4.2)都可以编译通过,且运行正常。

不过据说最新的4.x系列gcc,上面那个代码就编不过了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值