gpt4 book ai didi

c++ - 使用静态转换时,转换为类类型或对象引用更有意义吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:36:34 27 4
gpt4 key购买 nike

我刚刚意识到我可以使用其中任何一个来达到相同的效果。有什么注意事项吗?哪种约定更有意义?

#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类型的临时对象,通过切片从*this初始化,然后在临时对象上调用echo,然后销毁临时对象。如果您使 echo 函数更新 some_class 的成员变量,您会注意到 *this 实际上没有得到更新。

第二次转换调用 *this 对象上的 some_class::echo(); 函数,没有创建任何东西。

通常,第二个选项就是您的目标。正如 davidhigh 在评论中指出的那样,简单地编写 some_class::echo(); 而不是使用强制转换是一种更简洁的代码风格(恕我直言)。

关于c++ - 使用静态转换时,转换为类类型或对象引用更有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com