c++面试题 指针和引用 && 虚函数纯虚函数

面试官问了两个c++的基础问题,但奈何太久没有看c++理论,几乎全忘记了。
现在朝花夕拾,重新温习一遍:

  • c++ 指针和引用的区别
  • 虚函数和纯虚函数的区别和应用场景

c++ 指针和引用的区别

《c++ primer》P47
1.指针本身就是一个对象,允许对指针赋值和拷贝,在指针的生命周期内它可以先后指向不同的对象
2.指针无需再定义时赋初值,如果没有初始化,是一个不确定的值

《c++ primer》P49
1.指针和引用最重要的一点是,引用并非是一个对象,一旦定义了引用,就无法令引用绑定其他对象,每次访问引用都是访问它最初绑定的对象
2.指针和其他变量一样,是一个对象,存放的地址。地址指向其他对象。

其他:

void* 指针(P50):可以存放任意类型的对象的地址,限制有: 因为不清楚指针指向的数据类型,
不能操作void指向的对象。但可以和别的指针比较、做输入输出、赋值给另一个void 指针。

指向指针的指针:**表示指向指针的指针,
指向指针的引用:因为引用不是对象,所以没有指向引用的指针

int *p; //int 指针
int *&r = p; //引用r指向指针p

虚函数和纯虚函数的区别

《c++ Primer》P537 + 自己理解

虚函数和非虚函数:虚函数对象的类型是不知道的。直到执行时才会决定执行的版本(基类或派生类);非虚函数对象的类型是确定的,在编译时就绑定到执行的版本上。所以非虚函数的地址对编译器来说“静态”的,实例地址只是个this指针参数。而虚函数的地址,是先到实例的地址前面去查找它的虚函数表所在的地址,是“动态的”地址。

虚函数:虚函数有定义,子类可以覆盖或不覆盖虚函数。继承类中如果覆盖虚函数,形参类型和返回类型必须一致。如果继承类中有形参不一样名字一样的函数,编译器认为这是两个独立的函数。

虚函数和重载函数:重载函数的形参和返回类型上一定和父类的不同,而虚函数严格要求返回类型和形参皆一致

纯虚函数:含有纯虚函数的类是抽象类。抽象类只负责定义接口,不能被定义。继承抽象类的子类需要重新纯虚函数,才能被定义,不然仍然是抽象类。

虚函数和纯虚函数:虚函数有定义(为空也可以)子类不一定要实现虚函数;纯虚函数没有定义,子类一定要实现纯虚函数

虚函数作用:虚函数实现多态性,即子类和父类的是同一个函数,同一个形参,同一个返回类型,但结果不同。

纯虚函数作用:目的是为了接口。对应在java中,定义抽象类的语法是 abstract class,也就是在类的一级作指定。用作基类使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值