当脏高速缓存行被刷新(由于任何原因)时,整个高速缓存行是否写入内存或 CPU 跟踪哪些字被写入并减少内存写入次数?
如果这在不同架构之间有所不同,我主要有兴趣了解 Blackfin 的这一点,但很高兴听到 x86、ARM 等方面的实践......
在这种情况下
void f(int *);
void f(const int *);
...
int i;
f(&i);
Run Code Online (Sandbox Code Playgroud)
情况很清楚 - f(int *) 被调用,这似乎是正确的。
但是,如果我有这个(错误地这样做了(*)):
class aa
{
public:
operator bool() const;
operator char *();
};
void func(bool);
aa a;
func(a);
Run Code Online (Sandbox Code Playgroud)
运算符 char *() 被调用。我不明白为什么这样的决策路径比使用 operator bool() 更好。有任何想法吗?
(*) 如果将 const 添加到第二个运算符,则代码当然会按预期工作。
c++ overloading conversion-operator language-lawyer const-method