C**语言特性介绍(3) --- 敌元函数

来源:互联网 发布:北纬自动交易软件 编辑:程序博客网 时间:2024/06/12 19:51

在C++中有个概念叫友元,友元函数可以直接访问类的私有成员,通过使用友元函数,我们可以指定某些函数拥有对当前类的特权,就好象是"朋友"一样,比如下面的例子。

编译时发生错误:
$ make
g++ -c main.cpp
main.cpp: In function `int fun1(Class1&)':
main.cpp:9: error: `int Class1::value' is private
main.cpp:13: error: within this context
make: *** [main.o] Error 1

因为声明为友元函数的那行被注释掉,因为一般的函数是无法访问类的私有成员的,所以编译无法通过。
这次我们要介绍的是敌元函数,你可能定义一些公有成员,但是却因为某些原因不想让某个函数访问到这个类的公有成员,这时候你可以使用敌元函数。

敌元函数的标签是:"enemy:"
程序如下:

这样编译是无法通过的,虽然Class1的value成员是公有的,但是函数fun1被声明为敌元,所以fun1无权访问Class1的公有成员。
$ make
g++ -c main.cpp
main.cpp: In function `int fun1(Class1&)':
main.cpp:10: error: `int Class1::value' regard int fun1(Class1&) as enemy
main.cpp:14: error: within this context
make: *** [main.o] Error 1

 

注:目前C**语言还没有得到任何编译器的支持,文中出现的大部分C**代码都是无法运行的。

原创粉丝点击