您知道有时当某些事情不起作用并且想要快速解决时,您会得到愚蠢的主意……我的意思是真的很愚蠢的主意。但是它们以某种方式起作用。
为了能够模拟非虚拟功能,我删除了 google测试框架中的每个“替代” ,现在我的程序可以平稳运行了。
(不是一个bug。它可以按预期工作。)
所以我的问题是。 这种方法有多危险?我是 愚蠢 吗?
我之所以得出这个结论是因为写覆盖的唯一两个原因是:
我正在使用c ++
答案 0 :(得分:2)
我不想成为坏消息的承担者,但是通过删除那些Array.from(document.querySelectorAll(".primary li a")).forEach((element,index)
=> {
element.classList = "";
});
,您失去了安全性,无法用众所周知的脚开枪。
非病毒功能不会添加到V表中。这意味着如果您执行以下操作:
overrides
您将没有虚拟函数调用,即,如果您在class Foo
{
public:
int doThings() { return 42; };
}
class MockFoo : public Foo
{
public:
int doThings() { return -1; };
}
上调用doThings()
,您将始终调用Foo*
并获得Foo::doThings()
,无论基础对象是Foo还是MockFoo。换句话说:
42
总是会导致class Bar
{
public:
int doBarThings(Foo* foo) { return foo->doThings() + 10; };
}
TEST_F(BarTest, doThings)
{
Bar bar;
MockFoo mockFoo;
bar->doBarThings(&mockFoo);
}
被调用(即使您提供了Foo::doThings()
),因为MockFoo
需要一个Bar::doBarThings(Foo* foo)
指针,并且Foo
中的功能doThings()
是非虚拟的。