草庐IT

cast_sender

全部标签

c++ - dynamic_cast 的性能?

阅读问题前:这个问题不是关于使用dynamic_cast有多大用处。它只是关于它的性能。我最近开发了一个经常使用dynamic_cast的设计。在与同事讨论时,几乎每个人都说不应该使用dynamic_cast,因为它的性能很差(这些同事背景不同,在某些情况下彼此不认识。我我在一家大公司工作)我决定测试这种方法的性能,而不是仅仅相信它们。使用了以下代码:ptimefirstValue(microsec_clock::local_time());ChildObject*castedObject=dynamic_cast(parentObject);ptimesecondValue(micr

c++ - 将 dynamic_cast 与引用和指针一起使用时的行为差异

我正在检查dynamic_cast的行为,发现当它失败时,只有当目标是引用类型时才会抛出std::bad_cast异常。如果目标是指针类型,则转换不会引发异常。这是我的示例代码:classA{public:virtual~A(){}};classB:publicA{};intmain(){A*p=newA;//Usingreferencetry{B&b=dynamic_cast(*p);}catch(std::bad_castexp){std::cout(p);if(pB==NULL){std::cout输出是“Caughtbadcast”和“NULLpointer”。代码使用VS20

c++ - 将 dynamic_cast 与引用和指针一起使用时的行为差异

我正在检查dynamic_cast的行为,发现当它失败时,只有当目标是引用类型时才会抛出std::bad_cast异常。如果目标是指针类型,则转换不会引发异常。这是我的示例代码:classA{public:virtual~A(){}};classB:publicA{};intmain(){A*p=newA;//Usingreferencetry{B&b=dynamic_cast(*p);}catch(std::bad_castexp){std::cout(p);if(pB==NULL){std::cout输出是“Caughtbadcast”和“NULLpointer”。代码使用VS20

c++ - 当两个链接的 static_cast 可以完成它的工作时,为什么我们在 C++ 中有 reinterpret_cast?

假设我想将A*转换为char*反之亦然,我们有两个选择(我的意思是,我们中的许多人认为我们有两个选择,因为两者似乎都有效!因此困惑!):structA{intage;charname[128];};Aa;char*buffer=static_cast(static_cast(&a));//choice1char*buffer=reinterpret_cast(&a);//choice2两者都可以正常工作。//convertbackA*pA=static_cast(static_cast(buffer));//choice1A*pA=reinterpret_cast(buffer);//

c++ - 当两个链接的 static_cast 可以完成它的工作时,为什么我们在 C++ 中有 reinterpret_cast?

假设我想将A*转换为char*反之亦然,我们有两个选择(我的意思是,我们中的许多人认为我们有两个选择,因为两者似乎都有效!因此困惑!):structA{intage;charname[128];};Aa;char*buffer=static_cast(static_cast(&a));//choice1char*buffer=reinterpret_cast(&a);//choice2两者都可以正常工作。//convertbackA*pA=static_cast(static_cast(buffer));//choice1A*pA=reinterpret_cast(buffer);//

c++ - reinterpret_cast 类型转换成本

我的理解是,C++reinterpret_cast和C指针强制转换只是一个编译时功能,而且它根本没有性能成本。这是真的吗? 最佳答案 这是一个很好的假设。但是,优化器可能会限制在存在reinterpret_cast的情况下它可以假设的内容。或C指针强制转换。然后,即使转换本身没有关联的指令,生成的代码也会变慢。例如,如果您将int转换为指针,优化器可能不知道该指针可能指向什么。因此,它可能不得不假设通过该指针的写入可以更改任何变量。这胜过非常常见的优化,例如将变量存储在寄存器中。 关于c

c++ - reinterpret_cast 类型转换成本

我的理解是,C++reinterpret_cast和C指针强制转换只是一个编译时功能,而且它根本没有性能成本。这是真的吗? 最佳答案 这是一个很好的假设。但是,优化器可能会限制在存在reinterpret_cast的情况下它可以假设的内容。或C指针强制转换。然后,即使转换本身没有关联的指令,生成的代码也会变慢。例如,如果您将int转换为指针,优化器可能不知道该指针可能指向什么。因此,它可能不得不假设通过该指针的写入可以更改任何变量。这胜过非常常见的优化,例如将变量存储在寄存器中。 关于c

c++ - static_cast 和 reinterpret_cast 有什么区别?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Whenshouldstatic_cast,dynamic_castandreinterpret_castbeused?我在c++中使用c函数,其中在c中作为void类型参数传递的结构直接存储相同的结构类型。例如在C中。voidgetdata(void*data){Testitem*ti=data;//Testitemisofstructtype.}为了在c++中做同样的事情,我使用static_cast:voidfoo::getdata(void*data){Testitem*ti=static_cast(

c++ - static_cast 和 reinterpret_cast 有什么区别?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Whenshouldstatic_cast,dynamic_castandreinterpret_castbeused?我在c++中使用c函数,其中在c中作为void类型参数传递的结构直接存储相同的结构类型。例如在C中。voidgetdata(void*data){Testitem*ti=data;//Testitemisofstructtype.}为了在c++中做同样的事情,我使用static_cast:voidfoo::getdata(void*data){Testitem*ti=static_cast(

interface - Golang : Can I cast to chan interface{}

我正在尝试为订阅编写一个通用包装器,例如:typeSubscriberinterface{Subscribe(addrstring)chaninterface{}}假设我想使用一个库,其中有一个订阅方法,但它使用chanlibrary.Object。我希望能够做类似的事情:func(s*mySubscriber)Subscribe(addrstring)chaninterface{}{ch:=make(chanlibrary.Object)library.Subscribe(addr,ch)returnchaninterface{}(ch)}目前,我认为这样的Actor阵容是不可能的。