您的位置:首页 > 职场人生

面试、笔试题记录

2015-09-19 11:07 363 查看

强制类型转换:

C++类型转换分为:隐式类型转换和显式类型转换

第1部分. 隐式类型转换

又称为“标准转换”,包括以下几种情况:
1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。

2)一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对象的类型

3)将一个表达式作为实参传递给函数调用,此时形参和实参类型不一致:目标转换类型为形参的类型

4)从一个函数返回一个表达式,表达式类型与返回类型不一致:目标转换类型为函数的返回类型

第2部分. 显式类型转换

被称为“强制类型转换”(cast)
C 风格: (type-id)
C++风格: static_castdynamic_castreinterpret_cast、和const_cast..

标准C++中有四个类型转换符:[b]static_castdynamic_castreinterpret_cast、和const_cast。[/b]

dynamic_cast:动态类型转换

static_cast:静态类型转换

reinterpret_cast:重新解释类型转换

const_cast:常量类型转换

专业的上面很多了,我说说我自己的理解吧:

dynamic_cast一般用在父类和子类指针或引用的互相转化;

static_cast一般是普通数据类型(如int m=static_cast<int>(3.14));

reinterpret_cast很像c的一般类型转换操作

const_cast是把const或volatile属性去掉

static_cast
用法:static_cast < type-id > ( expression )
说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。

dynamic_cast
用法:dynamic_cast < type-id > ( expression )
说明:该运算符把expression转换成type-id类型的对象。type-id必须是类的指针、类的引用或者void *;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。

dynamic_cast具有类型检查的功能,比static_cast更安全。

reinterpret_cast
用法:reinterpret_cast<type-id> (expression)
说明:type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。

const_cast
用法:const_cast<type_id> (expression)
说明:该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。

多态性:

//创建单链表
typedef struct node
{
char data;
struct node* next;
}LNode;

//创建单链表时一定要保证尾结点的next为空
LNode* create(LNode* head)
{
if(NULL==head)
{
head=(LNode*)malloc(sizeof(LNode));      //创建头结点
head->next=NULL;
}
LNode* cur=head;
LNode* tmp;
char elem;
while(1)
{
cin>>elem;
if(elem=='#')                                    //结束条件
{
break;
}
tmp=(LNode*)malloc(sizeof(LNode));     //申请临时结点为插入结点
tmp->data=elem;
tmp->next=NULL;                           //尾结点的next为空
cur->next=tmp;
cur=tmp;
}
return head;
}

//用法
LNode* head=NULL;
head=create(head);


单链表的建立

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: