草庐IT

static-cast

全部标签

【C++】类与对象(四)——初始化列表|explicit关键字|static成员|友元|匿名对象

前言:初始化列表,explicit关键字,static成员,友元,匿名对象文章目录一、构造函数的初始化列表1.1构造函数体内赋值1.2初始化列表二、explicit关键字三、static成员四、友元4.1友元函数4.2友元类五、内部类六、匿名对象一、构造函数的初始化列表1.1构造函数体内赋值classDate{public: Date(intyear,intmonth,intday){ //赋值,并非初始化 _year=year; _month=month; _day=day; }private: int_year; int_month; int_day;};构造函数调用之后,在函数体

c++ - 非多态类型派生类型的虚拟基础

基到派生的转换需要通过static_cast或dynamic_cast进行显式转换。当基数是虚拟时,只有后者适用。此外,dynamic_cast只能用于多态类型。两者一起似乎表明,鉴于所涉及的类型不是多态的,将虚拟基础转换为派生实际上是不可能的。这是真的吗? 最佳答案 您对标准的解释似乎是正确的。但是我愿意争辩说这无关紧要,因为你假设的带有非虚拟析构函数的虚拟基础是一场灾难,当有人试图多态删除它并遇到未定义的行为时,它就会发生,因为析构函数是非-虚拟。 关于c++-非多态类型派生类型的虚

c# - Windows 手机 8.1 : C# Callback with IList variable fails to cast to IVector

我有一个声明回调接口(interface)的C#windowsphone8.1VisualStudio(2013)项目publicinterfaceICallBack{//////TheChildCallbackmustoverridethismethodandthiswillbefiredwhentimecomes//////Theresultantfiles///ErrorcodevoidGotFileList(FileTypetype,IListfiles,ErrorCodecode);}我有一个按如下方式实现它的C++/CX包装器:refclassCallbackImplsea

C++ 类型比较 : typeid vs double dispatch dynamic_cast

是否有任何性能或稳健性原因使您更喜欢其中一个?#include#includestructB{virtualboolIsType(Bconst*b)const{returnIsType2nd(b)&&b->IsType2nd(this);}virtualboolIsType2nd(Bconst*b)const{returndynamic_cast(b)!=nullptr;}};structD0:B{virtualboolIsType(Bconst*b)const{returnIsType2nd(b)&&b->IsType2nd(this);}virtualboolIsType2nd(B

c++ - VC++ 警告 C4356 : static data member cannot be initialized via derived class

以下代码发出此警告,但它似乎工作正常,因为A::st和B::st都已初始化并且实际上代表相同的字符串。据我了解,这是格式错误的代码,不应编译(我检查了clang)。我想知道为什么VC++不发出错误而是发出警告?#include#includeclassA{public:staticconststd::stringst;};classB:publicA{};conststd::stringB::st="abcd";//warningC4356:'A::st':staticdatamembercannotbeinitializedviaderivedclassintmain(){std::

c++ - 海湾合作委员会 : Specifying static/dynamic libraries to build against

我有一个简单的C++项目,其结构如下:-一个基础项目(即:包含main()),以及针对其他所有内容的链接--一些自定义库,它们都是作为静态库构建的(即:.a文件)---其中一个静态库使用共享目标文件(即:.so文件)中的功能因此,例如,在所有初始编译完成后,项目在链接时将如何显示(在TreeView中):-myApp(themainapplication)--libaudio.a(theaudiolibraryImade)--libnetwork.a(thenetworkinglibraryImade)--libvideo.a(thevideolibraryImade)--libboo

c++ - 如何使用 static_cast 安全地识别和释放这个 c++ 对象?

在其他Objective-C类中,我在下面的c++类中调用代码。有时fSound对象不是FMOD::Sound对象,它在被释放时会崩溃。在释放之前如何确认fSound对象是正确的类型?-(void)unloadSound:(FMOD::Sound*)fSound{FMOD_RESULTresult=FMOD_OK;FMOD::Sound*soundEffect=static_cast(fSound);if(soundEffect){soundEffect->release();}soundEffect=NULL;fSound=NULL;} 最佳答案

c++ - 什么时候必须/应该使用 dynamic_cast 而不是 static_cast?

我想知道什么时候dynamic_cast必须或应该在static_cast上使用,并提供示例。我读过thisSOquestion,但它并没有真正提供任何具体的例子。我假设大多数示例都涉及多态类类型。目前我知道在static_cast上使用dynamic_cast的唯一原因是我不能100%确定我正在使用的具体类型。一些其他的想法:横向转换(在多重继承中)在虚拟继承层次结构中转换为基类在使用多重继承的类中转换到“最右边”的继承类型时,指针会改变(如果使用static_cast)吗?“如果类型未知”是唯一的原因吗?如果不是,有人可以提供示例来说明为什么必须或应该使用dynamic_cast而

【C++】---static成员(附OJ题)

一、静态成员变量1.概念:声明为static的类成员称为类的静态成员,静态成员分为两种:(1)static修饰的成员变量:静态成员变量(2)static修饰的成员函数:静态成员函数注意:静态成员变量一定要在:类外进行初始化2.如何计算一个类里面定义了多少个对象?#includeusingnamespacestd;classA{public: A() { ++countA; } A(constA&n) { ++countA; } ~A() { --countA; } //静态成员函数专门访问静态成员变量 staticintGetCountA() { returncountA; }priv

c++ - 在断言中检查 static_cast 与 reinterpret_cast

我看到了一些代码ASSERT(static_cast(p)==reinterpret_cast(p))我认为p是一个基类型指针。这个断言的目的是什么?它是否检查MyClass不是某些多重继承层次结构的一部分(或任何会导致已知强制转换更改p的地址值的东西)? 最佳答案 由于reinterpret_cast(p)的行为是大多数用途的特定实现,几乎所有reinterpret_cast(p)的用途是代码高度不可移植且理想情况下应避免的标志。有时reinterpret_casts是不可避免的,但尝试断言它的属性几乎肯定是代码正在尝试做它不应该