[英]When using static cast, does it make more sense to cast as class type or object reference?
我只是意识到我可以使用任一方法来达到相同的效果。 有什么警告吗? 哪种约定更有意义?
#include <iostream>
using namespace std;
class some_class {
public:
void echo() {
cout << 1 << endl;
}
};
class other_class : public some_class {
public:
void echo() {
// Does it matter?
static_cast<some_class>(*this).echo();
static_cast<some_class&>(*this).echo();
}
};
int main() {
other_class a;
a.echo();
return 0;
}
第一个some_class
会创建一个some_class
类型的临时对象,该对象通过切片从*this
初始化,然后在该临时对象上调用echo
,然后销毁该临时对象。 如果您使echo
函数update为some_class
的成员变量,您会注意到*this
实际上没有被更新。
第二个转换调用some_class::echo();
函数在*this
对象上,而不创建任何对象。
通常,第二种选择是您要针对的目标。 正如davidhigh在评论中指出的那样,简单地编写some_class::echo();
是一种更简洁的代码样式(无论如何还是恕我直言some_class::echo();
而不是使用演员表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.