您的位置:首页 > 编程语言 > C语言/C++

面试指南 笔记(五) C和C++的区别

2012-07-19 09:10 295 查看
基础部分就快完了,高兴啊



C和C++的最大区别当然是面向对象,不过不在这部分的考虑范围内。这里主要讨论static,结构体,malloc和new,引用和指针四部分。

第一题:static在C/C++中的区别

在C中,static主要有以下两种用途:

1、定义局部静态变量。局部静态变量具有局部变量的记忆性和生存周期的全局性特点。

2、限定访问区域。被static修饰的变量、函数只能被同一文件内的代码段访问。

而C++中,还有另一种使用方法,就是定义静态成员变量和静态成员函数,表示其不属于任何一个类实例,是类的所有实例所共有的。

第二题:结构体的区别

在C++中,结构体其实就相当于默认为public的类,所以,类该有的特性,貌似它都有,而C嘛,没有面向对象,所以……

(1)C语言的结构体不能有函数成员。

(2)C语言的结构体中数据成员没有private,public,protected等访问限定。

(3)C语言的结构没有继承关系。

差不多就是在比较C的结构和C++的类的区别了……

第三题:malloc 和 new (C++)的区别

貌似因为对C++不熟悉,我在C++里面也经常用malloc,来给指针开辟空间……

(1)new,delete是操作符,可以重载,只在C++中使用。malloc,free是函数,可以覆盖(

),都可以使用。

(2)new调用对象的构造函数,malloc仅仅分配内存。

(3)new,delete返回的是某种数据类型的指针,malloc,free返回的是void指针。

第四题:引用(C++)和指针区别

引用是变量或对象的别名,只有声明没有定义,在C++(好像JAVA也有?)中,引用主要用于函数的形参和函数返回值。

(1)作为函数的参数时。

指针版swap:

void swap(int *a, int *b)

{

int temp; temp = *a; *a = *b; *b = temp;

}//出了名的绕死人、易出错函数,尤其是对C语言初学者来说

swap(&a, &b);//调用

引用版swap:

void swap(int &a, int &b)

{

int temp; temp = a; a = b; b = temp;

}

swap(a,b);

(2)作为函数的返回值,这个……C++用得少,指针函数什么的都还不敢用,更别提这些了……

大多数情况下可以被指针替代,但是遇到构造函数和操作符重载函数的问题时,不能替代。

(3)初始化不同,指针可不初始化,初始化时指向地址或为空,int * pi = &var;

引用必须初始化并:int &rval = var; 不存在指向空值的引用。

(4)引用初始化后不能改变。

(5)引用是别名,所以不用分配空间。

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