名字空间和友元函数

在类中声明友元函数,如果类和友元函数不在同一个名字空间中的话,声明时必须指明是哪个名字空间的函数。

namespace oa

{

class c{

    friend void :: func();

};

}

void func()();

表明类c的友元函数func是全局名字空间的函数。

时间: 2025-01-19 07:17:55

名字空间和友元函数的相关文章

Qt中Ui名字空间以及setupUi函数的原理和实现

用最新的QtCreator选择GUI的应用会产生含有如下文件的工程   下面就简单分析下各部分的功能.   .pro文件是供qmake使用的文件,不是本文的重点[不过其实也很简单的],在此不多赘述. 所以呢,还是从main开始, #include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWin

在名字空间中声明类和成员函数

虽然很多程序员都熟悉名字空间的概念,但他们常常都是被动地使用名字空间.也就是说他们使用的是第三方定义的成员(如标准库的类和函数),而不是在名字空间中声明自己的类和函数.本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们. 名字空间是一个范畴,它包含类声明,函数声明,常量声明和模板声明等名字空间成员.例如: namespace proj_alpha { //下面是名字空间 proj_alpha 的成员 class Spy {/*..*

C++之:友元函数

一.定义 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数); 友元提供了不同类的成员函数之间.类的成员函数与一般函数之间进行数据共享的机制.通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员.c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密. 友元的正确使用能提高程

简要介绍C++编程中的友元函数和友元类_C 语言

一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来补充介绍一个例外--友元(friend). fnend 的意思是朋友,或者说是好友,与好友的关系显然要比一般人亲密一些.有的家庭可能会这样处理:客厅对所有来客开放,而卧室除了本家庭的成员可以进人以外,还允许好朋友进入.在C++中,这种关系以关键宇 friend 声明,中文多译为友元.友元可以访问与其有好友关系的类

(一二二)友元函数

由于C++控制了对类对象的访问(例如不允许访问私有成员).于是,通常公有类方法(例如:成员函数)提供唯一的访问途径.   这样保护了私有成员,但同时又因为这种限制太严格,以致于不适合特定的编程问题.   在这种情况下,C++提供了另外一种形式的访问权限:友元.     友元有三种: ①友元函数: ②友元类: ③友元成员函数.       通过让函数成为类的友元,可以赋予该函数与类的成员函数具有相同的访问权限(例如可以访问.修改私有成员).   为什么需要友元函数: 以类成员函数为例: Skill

c++-类的友元函数是命名空间的成员吗?

问题描述 类的友元函数是命名空间的成员吗? 在一个名称空间里面声明了一个类,在名称空间外定义,在这个类里面声明了一个友元函数,那么这个友元函数是不是原来名称空间的成员? 因为我实现这个友元的时候没有加命名空间限定,它自己认为自己是名称空间里的成员. 另外(与上无关),类的友元函数是不用事先声明的吧,现在类写到这了,需要友元,我就声明个友元,然后在类后面实现它就好了,是这样吗?或者我也可以事先声明,在类前声明,在类里加friend,类后再实现也是可以的是吗? 解决方案 看友元函数自己的定义,放在命

C++参考——成员函数、友元函数和一般函数有区别

[项目-成员函数.友元函数和一般函数有区别](1)阅读下面的程序,体会注释中的说明. //例:使用成员函数.友元函数和一般函数的区别 #include <iostream> using namespace std; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成员函数 friend void display2(Time &); /

Ajax.Net的onLoading及aspx页面的默认名字空间及ajaxpro的google组怎么没有一个chinese?

ajax|google|loading|名字空间|页面 这是ajax.net作者做的onLoading demo.下载他的代码来看,有几点疑问:1,如果一个aspx页面没有后置代码cs类文件,或者在vs2005中没有给他手动加上名字空间,那么aspx的默认的名字空间是什么呢?难道是ASP??我想大家可能都没有注意到这个问题吧.请教吴旗娃师傅,他立即Response.Write(this.GetType().ToString())告诉我了结果,千真万确是ASP:2,如果一个类中包含了Ajax.Ne

Xhtml第2天:什么是名字空间

xhtml|名字空间 DOCTYPE声明好以后,接下来的代码是: <html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312"> 通常我们html4.0的代码只是<html>,这里的"xmlns"是什么呢? 这个"xmlns"是xhtml namespace的缩写,叫做"名字空间"声明.名字空间是什么作用呢?阿捷自己的理解是: 由于