gpt4 book ai didi

c++ - 这种面向 key 的访问保护模式是已知的惯用语吗?

转载 作者:IT老高 更新时间:2023-10-28 13:59:28 25 4
gpt4 key购买 nike

Matthieu M.this answer 中提出了访问保护模式我以前见过,但从未有意识地考虑过一种模式:

class SomeKey { 
friend class Foo;
SomeKey() {}
// possibly make it non-copyable too
};

class Bar {
public:
void protectedMethod(SomeKey);
};

这里只有 key 类的 friend 可以访问protectedMethod():

class Foo {
void do_stuff(Bar& b) {
b.protectedMethod(SomeKey()); // fine, Foo is friend of SomeKey
}
};

class Baz {
void do_stuff(Bar& b) {
b.protectedMethod(SomeKey()); // error, SomeKey::SomeKey() is private
}
};

与使 Foo 成为 Barfriend 相比,它允许更细粒度的访问控制,并避免更复杂的代理模式。

有谁知道这种方法是否已经有了名字,即,是一种已知的模式吗?

最佳答案

感谢 your other question看起来这种模式现在被称为“密码”模式。

在 C++11 中,它变得更加简洁,因为不是调用

b.protectedMethod(SomeKey());

你可以打电话:

b.protectedMethod({});

关于c++ - 这种面向 key 的访问保护模式是已知的惯用语吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com