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

C/C++ 面试题基础知识

2012-05-09 16:12 309 查看

C/C++ 中struct的区别

C中的struct是没有权限设置的。
C++中struct增加了访问权限,且可以和类一样有成员函数。
C++中的struct等同于class,只是class默认成员权限是private,而struct默认成员权限是public。且class的默认继承为私有继承,struct的默认继承为公有继承。

C++中引用和指针有什么不同?指针加上什么限制等于引用?

引用不是一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。引用一经确定就不能修改。
指针是一个变量,需要在内存中分配空间,此空间中存储所指对象的地址。由于指针是一个普通变量,所以其值还可以通过重新赋值来改变。
把指针定义为const后,其值就不能改变了,功能和引用类似,但有本质的区别。

继承与多态

覆盖(override)是指子类重新定义父类的虚函数的做法。

重载(overload)是指允许存在多个同名函数,而这些函数的参数表不同。他们的地址在编译期就绑定了(早绑定),重载与多态无关。

继承的作用是代码重用。多态为了实现接口重用

虚函数

一个类存在虚函数,那么编译器就会为这个类生成一个虚表,在虚表里存放的是这个类所有虚函数的地址。

当生成类对象的时候,编译器会自动的将类对象的前四个字节设置为虚表的地址,而这四个字节就可以看作是一个指向虚表的指针。

虚表里依次存放的是虚函数的地址,每个虚函数的地址占4个字节。

struct 的大小

struct A
{
A(){}
~A(){}
int m1;
int m2;
};
struct B
{
B(){}
~B(){}
int m1;
char m2;
static int m3;
};
struct C
{
C(){}
virtual ~C(){}
int m1;
short m2;
};

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