2021-01-05 腾讯PCG一面

本文详述了C++中的数组、vector、slice的区别,final关键字的作用,初始化列表的顺序,C++11的新特性如移动语义、智能指针和lambda表达式,以及右值引用的目的。同时,讲解了C++的虚继承与虚析构函数的重要性,MySQL的MVCC实现原理,Redis的常用数据结构,以及HTTP和Zookeeper的相关知识。
摘要由CSDN通过智能技术生成

1.数组、vector、slice的区别?

在这里插入图片描述
golang中数组和切片的区别

切片时指针类型,数组是值类型
数组的长度是固定的,而切片不是(切片是动态的数组)
切片比数组多一个属性:容量(cap)
切片的底层是数组


2.C++关键字final的作用?

c++中final关键的作用最重要就是两个:
1.禁止虚函数被重写
2.禁止基类被继承

override标识符可以让编译器帮忙确认派生类中声明的重写函数与基类的虚函数是否有相同的签名,同时也明确表明将会重写基类的虚函数,可以防止因疏忽把本来的想重写的基类的虚函数在派生类中声明为重载,还可以防止在派生类中重写的虚函数声明漏掉virtual关键字

class A{
   
    virtual void foo1() final;
    virtual void foo2();
    void bar() final;//错误,只能修饰虚函数
};
 
class B final:public A
{
   
    virtual void foo2();
    void foo1();//错误,final修饰的虚函数不能重写
};
 
class C:B//错误,final修饰的类不能被继承
{
   
    void foo2();
};
 
class Base
{
   
    virtual void foo1(int a,double b, bool c){
   };
    virtual void foo2(int a,double b, bool c){
   };
};
 
class Derived:public Base
{
   
    virtual void foo1(int x,int y,bool z) override{
   };//错误&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值