C/C++中判断变量的类型 js 判断变量类型

typeid

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;

C/C++中判断变量的类型 js 判断变量类型
}

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}

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/133177.html

更多阅读

C ++ 中对象或其对象指针的赋值 c语言指针赋值

C++中对象或其对象指针的赋值C++中成员函数的动态绑定:C++中要实现函数的动态绑定,必须在其基类中将函数声明为virtual且在子类中对函数加以实现。然后用一个基类指针指向某一个子类对象,这样才会在函数调用时实现动态绑定。在C++中,只

模拟c++中的strstr函数 c语言中strstr函数

/************************************************************************//* 例子:请写出一个函数来模拟c++中的strstr函数:该函数的返回值是主传中字符子串的位置以后的所有字符,请不要使用任何c程序已有的函数函数名: strstr函

JS中实现replaceAll的方法 js replaceall

第一次发现JavaScript中replace()方法如果直接用str.replace("-","!")只会替换第一个匹配的字符.而str.replace(/-/g,"!")则可以全部替换掉匹配的字符(g为全局标志)。js本身没有提供该方法,但是用个正则可以做到。下面是将文本域里面

声明:《C/C++中判断变量的类型 js 判断变量类型》为网友春风十里柔情分享!如侵犯到您的合法权益请联系我们删除