记录一个c++笔试,之前笔试的内容没记下都忘了
函数重载与虚函数
问区别
函数重载与虚函数之间的相同点是多个函数版本具有相同的函数名,即表现出对同一消息的不同操作。
二者之间的不同点表现在:
⑴ 函数重载的不同函数版本既允许存在于同一类中,也允许基类的成员函数在派生类中重载。存在于同一类中的不同重载函数版本的参数(类型、个数、顺序)必须有所不同。如果存在于基类和派生类中的成员函数的原型完全一致,则派生类的成员函数将覆盖基类的同名函数。
⑵ 虚函数是用来表现基类和公有派生类的相同原型成员函数之间的关联关系的实现机制,因此这种同原型成员函数必须分属于基类和派生类,并且首先在基类中用关键字 virtual声明虚函数;一个虚函数一旦被定义,就可以在该基类的一个或多个直接或间接派生类中被重新定义;虚函数重新定义时,其函数原型,即包括返回类型、函数名、参数的类型、个数和顺序,都必须与基类中的原型完全一致。
之前笔试过一个重载和重写什么区别
重写:一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。注意构造方法不能被重写。
c++类的默认函数
问题好像是问有什么默认函数然后可以不使用默认函数吗?
默认构造函数;默认拷贝构造函数;默认析构函数;默认重载赋值运算符函数;默认重载取址运算符函数;默认重载取址运算符const函数;
如果自己实现了构造函数,就没有默认,如果没有实现构造函数,系统会默认加上一个无参数的构造函数。
delete和delete[]
delete 释放new分配的单个对象指针指向的内存
delete[] 释放new分配的对象数组指针指向的内存
代码题
快排
字符串逆置逆置