C/C++中判断变量的类型 js 判断变量类型
c++中该函数用于获知一个变量的具体类型。
运行时获知变量类型名称,可以使用 typeid(变量).name,需要注意不是所有编译器都输出"int"、"float"等之类的名称,对于这类的编译器可以这样使用:float f = 1.1f; if( typeid(f) == typeid(0.0f) ) ……
事例代码:
#include <iostream>
using namespace std;
int main( void )
{
// sample 1
cout << typeid(1.1f).name() << endl;
// sample 2
class Base1
{
};
class Derive1 : public Base1
{
};
Derive1 d1;
Base1& b1 = d1;
cout << typeid(b1).name() << endl; // 输出"class Base1",因为Derive1和Base1之间没有多态性
// sample 3, 编译时需要加参数 /GR
class Base2
{
virtual void fun( void ) {}
};
class Derive2 : public Base2
{
};
Derive2 d2;
Base2& b2 = d2;
cout << typeid(b2).name() << endl; // 输出"class Derive2",因为Derive1和Base1之间有了多态性
// sample 4
class Derive22 : public Base2
{
};
// 指针强制转化失败后可以比较指针是否为零,而引用却没办法,所以引用制转化失败后抛出异常
Derive2* pb1 = dynamic_cast<Derive2*>(&b2);
cout << boolalpha << (0!=pb1) << endl; // 输出"true",因为b2本身就确实是Derive2
Derive22* pb2 = dynamic_cast<Derive22*>(&b2);
cout << boolalpha << (0!=pb2) << endl; // 输出"false",因为b2本身不是Derive2
try {
Derive2& rb1 = dynamic_cast<Derive2&>(b2);
cout << "true" << endl;
} catch( bad_cast )
{
cout << "false" << endl;
}
try {
Derive22& rb2 = dynamic_cast<Derive22&>(b2);
cout << "true" << endl;
} catch( ... ) // 应该是 bad_cast,但不知道为什么在VC++6.0中却不行
{
cout << "false" << endl;
}
return 0;
}
dede typeid
织梦标签内容
是指 typeid 的同级栏目
使用方式
{dede:arclist row=8 type='image.' titlelen='12' orderby=pubdate typeid='3' flag='h'}
{/dede:arclist}
更多阅读
C++中cos,sin,asin,acos这些三角函数操作的是弧度,而非角度转 弧度和角度的换算
C++中cos,sin,asin,acos这些三角函数操作的是弧度,而非角度,你需要把角度转化为弧度.弧度=角度*Pi/180;例子1:比如对边和邻边分别为a,b
C ++ 中对象或其对象指针的赋值 c语言指针赋值
C++中对象或其对象指针的赋值C++中成员函数的动态绑定:C++中要实现函数的动态绑定,必须在其基类中将函数声明为virtual且在子类中对函数加以实现。然后用一个基类指针指向某一个子类对象,这样才会在函数调用时实现动态绑定。在C++中,只
IOS开发_objective-c中的OOP_灵隐__ objective c 开发工具
objective-c中的OOP其实,objective-c本质上就是C语言。首先解释一个简单的小程序。1.入门Hello程序解析。#import<Foundation/Foundation.h> int main(int argc,const char *argv[]){ NSlog(@"Everyone has some helloworlds."); ret
模拟c++中的strstr函数 c语言中strstr函数
/************************************************************************//* 例子:请写出一个函数来模拟c++中的strstr函数:该函数的返回值是主传中字符子串的位置以后的所有字符,请不要使用任何c程序已有的函数函数名: strstr函
JS中实现replaceAll的方法 js replaceall
第一次发现JavaScript中replace()方法如果直接用str.replace("-","!")只会替换第一个匹配的字符.而str.replace(/-/g,"!")则可以全部替换掉匹配的字符(g为全局标志)。js本身没有提供该方法,但是用个正则可以做到。下面是将文本域里面