c++特殊工具与技术

类型识别

typeid:用于返回表达式的类型

dynamic_cast:用于将基类的指针或引用安全的转换成派生类的指针或引用

Base &b1,*b2;//Base是基类 Derived是派生类

Derived &d = dynamic_cast<Derived&>(b1);

Derived *d = dynamic_cast<Derived*>(b2);

int x;

typeid(x);

typeid(b1);

typeid(d);

 

枚举类型

enum:枚举值默认从0开始依次加1,也可以指定枚举值,可以加类型限制,枚举成员是const。

enum color{red,yellow,green,};

color co = color::red;

enum sto {red = 1,yellow = 3,green = 6,};

int o = sto::green;

enum class pepr{aaa,bbb,ccc};//枚举成员被隐藏

 

类的成员指针

Scree myScree, *pScree = &myScree;

auto pmf = &Scree::get;

char c1 = (pScree->*pmf)();

char c2 = (myScree.*pmf)(2, 2);

 

union

一种节省空间的类

一个union可以有多个数据成员,但是在任意时刻只有一个数据成员。

union token

{

//默认情况下成员是公有的

char cval;

int num;

double d;

int fun() {}

token() {}

};

只有公有成员并不含构造函数时才能用,该初始值被用于初始化第一个成员,故只能有一个。

token fir_to = { 'a'};

token *to = new token;

to->cval = 'a';

 

匿名union不能包含受保护的成员或私有成员,也不能定义成员函数。

union {

char ch; int num; double d;

};

 

嵌套类:定义在一个另一个类的内部。

局部类:定义在一个函数的内部。

 

extren "C"

可以用C++代码调用其他语言编写的代码,前提编译器要兼容这些语言。

使用一般要放在头文件中

extren "C"{

#include<string.h>

}

pf指向一个c函数

extren "C" void(*pf)(int);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值