提问人:zclll 提问时间:10/11/2022 最后编辑:Andyzclll 更新时间:10/11/2022 访问量:67
这是C++的缺陷,允许破坏访问控制吗?[复制]
Is this a defect of C++ that allow to break access control? [duplicate]
问:
宣布成员为私有意味着永远不应该有合法的方式直接从外部访问它。但是模板显式实例化违反了法律。这是出于什么考虑?还是有缺陷?
例:
#include <cassert>
#include <iostream>
class A {
public:
int X() { return x_; }
private:
int x_;
};
int A::*FiledPtr();
template <int A::*M>
struct Rob {
friend int A::*FiledPtr() { return M; }
};
template struct Rob<&A::x_>;
int main() {
A o;
o.*FiledPtr() = 10;
assert(o.X() == 10);
}
答: 暂无答案
评论