C++ 重写函数调用运算符()c++;
我在IoniationTunnel.h文件中遇到了这个被重写的函数调用运算符():C++ 重写函数调用运算符()c++;,c++,oop,arguments,virtual-functions,C++,Oop,Arguments,Virtual Functions,我在IoniationTunnel.h文件中遇到了这个被重写的函数调用运算符(): void operator()(Particles *, std::vector<double>*, unsigned int, int ipart_ref = 0) override; void操作符(); 这与电离.h文件中的虚拟void操作符()的参数完全匹配: virtual void operator()(Particles *, std::vector<double>*,
void operator()(Particles *, std::vector<double>*, unsigned int, int ipart_ref = 0) override;
void操作符();
这与电离.h文件中的虚拟void操作符()的参数完全匹配:
virtual void operator()(Particles *, std::vector<double>*, unsigned int, int ipart_ref = 0) {}
virtualvoid操作符()(粒子*,标准::向量*,无符号int,int-ipart\u-ref=0){}
电离是基类。电离隧道是派生类
2个问题:
多谢各位 不一定需要名称的未使用参数有时可用于让重载解析选择所需的重载:
void foo(int) {
std::cout << "this is foo(int)\n";
std::cout << "I dont need a name for the argument, because I am not using it anyhow";
}
void foo(double) {
std::cout << "this is foo(double)";
}
foo(1); // calls foo(int)
foo(1.0); // calls foo(double)
=something
是默认参数。函数
void foo(int x = 0) {
std::cout << x;
}
或者像这样:
foo(42);
foo();
在这种情况下,它相当于调用
foo(0);
有时,不一定需要名称的未使用参数对于让重载解析选择所需的重载非常有用:
void foo(int) {
std::cout << "this is foo(int)\n";
std::cout << "I dont need a name for the argument, because I am not using it anyhow";
}
void foo(double) {
std::cout << "this is foo(double)";
}
foo(1); // calls foo(int)
foo(1.0); // calls foo(double)
=something
是默认参数。函数
void foo(int x = 0) {
std::cout << x;
}
或者像这样:
foo(42);
foo();
在这种情况下,它相当于调用
foo(0);
在函数声明中,忽略变量的名称,只是为了可读性。除了一个简单的习惯外,放弃它的一个常见原因是:如果您的重载函数不使用其中一个参数,那么您也可以在实现中放弃该名称,以便向用户清楚地表明没有使用该变量。此外,这避免了编译器关于未使用变量的警告。非常感谢!在函数声明中,忽略变量的名称,只是为了可读性。除了一个简单的习惯外,放弃它的一个常见原因是:如果您的重载函数不使用其中一个参数,那么您也可以在实现中放弃该名称,以便向用户清楚地表明没有使用该变量。此外,这避免了编译器关于未使用变量的警告。非常感谢!小说明:@maximust_prime_is_463035的意思是,重载是使用不需要的输入变量的原因。不管有没有名字,重载本身都不会改变任何东西。@Cedric谢谢,重新措辞谢谢你们两个!非常感谢!小说明:@maximust_prime_is_463035的意思是,重载是使用不需要的输入变量的原因。不管有没有名字,重载本身都不会改变任何东西。@Cedric谢谢,重新措辞谢谢你们两个!非常感谢!