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{
};//错误&#