友元类和访问器节的定义
Definition of friend class and accessor sections
当将一个类定义为友类时,定义放在哪个访问器部分是否重要,如果重要,是否会改变友类可以访问的成员?
class aclass
{
private:
// friend bclass;
public:
// friend bclass;
protected:
// friend bclass;
};
class bclass
{};
访问说明符不适用于友元函数/类
你可以在任何访问说明符下声明Friend函数或类,并且函数/类仍然可以访问所有成员变量(Public,Protected &
一旦您将好友类/函数放入给定类(例如'aclass') 任何。它可以访问类的所有定义的成员(无论public/private/protected);例如:
class aClass
{
public: int pub; void fun1() {}
protected: int pro; void fun2() {}
private: int pri; aClass(const aClass& o);
friend void outsider ();
};
友元函数outsider()可以访问pub, pro, pri, fun1, fun2;但在这种情况下不是一个类复制构造函数(如果它没有在任何地方定义)。
友元函数按照约定不放在任何访问器中,因为根据定义它们不是类的一部分。你可以这样做:
class Elephants
{
//friend void notAMemberFuncion(argument 123);
public:
// member functions;
protected:
// data members;
};
友元类/函数可以访问类的所有private/protected/public成员,友元类/函数所放置的访问区没有任何影响。建议将friend类/函数放在public部分,因为friends是类接口的一部分。
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- 在C++中循环访问自定义结构列表的小问题
- 成员访问是否在空指针上定义C++?
- 如何访问宏中定义的数组元素
- 使(虚拟)函数在大多数派生类中无法访问中间基类中可访问,定义良好?
- 循环访问自定义双链表
- FlatBuffers C++ reinterpret_cast访问实际上是未定义的行为吗?这样做实际上可以吗?
- 错误:未定义对"静脉类型信息::电池访问"的引用
- 有没有办法从Makefile访问VS Code c_cpp_properties.json文件中的定义
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- 为什么c++允许成员函数定义中实例的私有成员访问
- 如何从类中定义的结构访问私有成员?c++
- 威纳派读取自定义文件或文件夹的所有访问权限
- 访问位域联合是C++标准中常见的初始数据未定义行为
- 正确的友元定义,以授予 std::map 对私有默认构造函数的访问权限
- 从源文件中定义的类访问标头中定义的类的私有变量
- 正在使用放置-new,复制存储,然后访问值未定义的行为
- 访问用户定义类型的数组的特定属性
- 访问嵌套块中重新定义的变量