作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我们有一个具有私有(private)构造函数的类,通过 friend
我们可以允许某些特定类仍然创建此类的对象:
class Foo
{
friend class Bar;
private:
Foo();
};
class Bar
{
Bar()
{
//create a Foo object
}
};
现在,如果我想要 friend
的对立面,其中 Foo
看起来像这样:
class Foo
{
//enemy/foe??? class Bar; (if only)
public:
Foo();
};
然后 Bar
的任何方法都不能访问 Foo
构造函数/创建 Foo
的对象,但其他类可以(因为它是 公共(public)
)。
class Bar
{
Bar()
{
Foo foo; //compiler error
}
};
这样的构造是否可能,或者我是否坚持将 Foo
设为私有(private)并为所有类添加好友?
最佳答案
这样的东西是不存在的,而且毫无意义。想象一下你有这样的情况:
class Foo
{
enemy class Bar;
public:
Foo() {}
};
class Bar
{
void evil() { Foo{}; }
};
没有什么能阻止 Bar
的实现者这样做:
class Bar
{
void evil() { do_evil(*this); }
};
void do_evil(Bar &self)
{
Foo{};
}
do_evil
不是 Bar
的成员(它是一个全局函数),因此它不是敌人。因此,可以轻松规避这种不友好。
关于c++ - 好友声明的反面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52892749/
我怎样才能做 git submodule absorbgitdirs 的反向操作? ? IE。移动子模块的 .git信息出superproject/.git/modules/然后回到 superpro
(注意:有一些类似的问题,但我找不到完全重复的问题) 问题 考虑抛硬币任意次数。在得到 3 个反面之前得到 2 个正面的概率是多少? 代码 为了模拟这一点,我设置了 10000000 次试验,其中 0
我是一名优秀的程序员,十分优秀!