C++ 我们怎样才能有朋友宣言;朋友阐述了班级名称&引用;例如c++;?
我对这个班的名字感到困惑。如能以我为例,我将不胜感激。C++ 我们怎样才能有朋友宣言;朋友阐述了班级名称&引用;例如c++;?,c++,declaration,keyword,friend,C++,Declaration,Keyword,Friend,我对这个班的名字感到困惑。如能以我为例,我将不胜感激。 语法:类名称 详细说明的类名仅表示类(或结构)关键字+类的实际名称 像这样使用它: friend class Klass; 从n4140开始: [class.friend]/3: 未声明函数的友元声明应具有以下形式之一: 类型说明符 简单类型说明符 友元类型名说明符 然后你有一个例子: class C; typedef C Ct; class X1 { friend C; // OK: class C is a friend }; c
语法:类名称 详细说明的类名仅表示
类
(或结构
)关键字+类的实际名称
像这样使用它:
friend class Klass;
从n4140开始:
[class.friend]/3:
未声明函数的友元声明应具有以下形式之一:类型说明符
简单类型说明符
友元类型名说明符 然后你有一个例子:
class C;
typedef C Ct;
class X1 {
friend C; // OK: class C is a friend
};
class X2 {
friend Ct; // OK: class C is a friend
friend D; // error: no type-name D in scope
friend class D; // OK: elaborated-type-specifier declares new class
};
所以:
D类朋友
是详细的类型说明符的一个示例。而friend
不是,被称为简单类型说明符-这是自C++11以来新出现的
#include <iostream>
namespace usr
{
int B = 20;
class A
{
public:
A( int x = 0 ) : x( x ) {}
friend class B; // using of elaborated type specifier
private:
int x;
};
class B
{
public:
std::ostream & out( const A &a, std::ostream &os = std::cout ) const
{
return os << a.x;
}
};
}
int main()
{
class usr::B b; // using of elaborated type specifier
b.out( usr::A( 10 ) ) << ' ' << usr::B << std::endl;
}
你的问题毫无意义。为什么不给我们一个小的代码示例来使用呢?从这里改编,指定由详细的类名命名的类、结构或联合作为这个类的朋友。这意味着朋友的成员声明和定义可以访问这个类的私有和受保护成员……我只需要C++的例子。你想让我们写一个例子,说明如何使用<代码>朋友< /Cord>关键字??你需要做些调查。这不是一个教程网站。
10 20