假设有这样一个抽象类:
class Base {
public:
virtual void f() = 0;
virtual ~Base() = default;
};
Run Code Online (Sandbox Code Playgroud)
还有一些功能:
void function (Base& x, bool flag1, bool flag2, bool flag3) {
if(flag1)
x.f();
if(flag2)
x.f();
if(flag3)
x.f();
}
Run Code Online (Sandbox Code Playgroud)
在main()函数中,我从共享库加载派生自该类的实例:
int main() {
Base* x = /* load from shared lib*/;
bool flag1 = getchar() == '1';
bool flag2 = getchar() == '2';
bool flag3 = getchar() == '3';
function(*x, flag1, flag2, flag3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题:我是否可以期望在一次函数调用中,void function (Base& x, bool flag1, …