Alerr Asked:2020-02-12 04:12:17 +0000 UTC2020-02-12 04:12:17 +0000 UTC 2020-02-12 04:12:17 +0000 UTC “virtual void funcC(double = 0.0);”是什么意思? 772 下午好。无意中发现了一个函数,参数里面写的不清楚: 虚拟无效 funcC(double = 0.0) 如果有一个变量名,这个参数是什么就很清楚了,或者如果这个东西没有被编译,那就是一个错字)但是没有,一切都可以编译和工作。这是什么,它的含义是什么:double = 0.0? c++ 1 个回答 Voted Best Answer Harry 2020-02-12T04:14:11Z2020-02-12T04:14:11Z 默认值。 如果您将其称为 as Obj.funcC()- 它将被视为Obj.funcC(0.0). 一句话,读懂函数参数的默认值是什么——比如这里。 没有变量名——因为它可能只是被保留或不需要。例如,在继承人中,可能需要它。而在基类中则不需要。 struct Base { virtual void out(double = 0.0) { cout << "Base::out\n"; } }; struct Derived: public Base { virtual void out(double x) { cout << "Drived::out " << x << "\n"; } }; int main(int argc, const char * argv[]) { Base * b = new Derived; b->out(); // Тут вызовется out() из Derived со значением 0.0 b->out(3); // Тут - со значением 3.0 } 不需要 Base 中的参数名称 - 它不被使用,只需要提供签名。 如果您输入某个名称,编译器会正确地注意到该名称存在,但未被使用。他在这里保持沉默。
默认值。
如果您将其称为 as
Obj.funcC()- 它将被视为Obj.funcC(0.0).一句话,读懂函数参数的默认值是什么——比如这里。
没有变量名——因为它可能只是被保留或不需要。例如,在继承人中,可能需要它。而在基类中则不需要。
不需要 Base 中的参数名称 - 它不被使用,只需要提供签名。
如果您输入某个名称,编译器会正确地注意到该名称存在,但未被使用。他在这里保持沉默。