首页 > C/C++ 面试题基础知识

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

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

 

 

转载于:https://www.cnblogs.com/xubin0523/archive/2012/05/09/2491960.html

更多相关:

  • C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!!   既然这些它都能实现,那它和class还能有什么区别? 最本质的一个区别就是默认的访问控制,...

  • 学习apue课程已经有一个多月了,有很多知识点需要自己去总结: 下面是主要的几个函数的介绍: 1-stat()函数是获得文件的主要信息。在linux当中主要以一个结构体来保存文件的信息,其中每一个字段都代表着文件的一个信息量: struct stat {dev_t st_dev; /* ID of device co...

  • 草色新雨中, 松声晚窗里。之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。一、M 语言在哪里?M语言的函数公式有三个地...

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...

  •  ★ 相同点:     1. 都是地址的概念;     指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。     ★ 区别:     1. 指针是一个实体,而引用仅是个别名;     2. 引用使用时无需解引用(*),指针需要解引用;     3. 引用只能在定义时被初始化一次,之后不可变;指针可变�...

  • 在C++中,&既有引用又有取地址,其实他们的区别可以用一句话概括:=号左边是引用,=号右边是取址。 比如   int a=3;     int &b=a;//引用;                                                    int *p=&a; //取地址 引用b,它是变量a的引用,即别...