1、new、malloc、delete、free的区别?
new和delete会自动调用对象的构造与析构函数而malloc与free不会;new和delete是C++运算符,而malloc和free是C/C++标准库函数
2、delete 只会调用一次析构函数,而 delete[] 会调用每一个成员的析构函数。
3、如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
4、重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。;重写:是指子类重新定义父类虚函数的方法。
5、C++ 不是类型安全的因为两个不同类型的指针之间可以强制转换(用 reinterpret cast) ,C# 是类型安全的。
6、struct和class的区别?
struct 的成员默认是公有的,而类的成员默认是私有的。 struct 和 class 在其他方面是功能相当的。
7、 const 与 #define 相比,有何优点?
const 作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被 Const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1).const 有类型安全检查。 2).const 常量能进行调试。
8 . 类成员函数的重载、覆盖和隐藏区别?
1). 成员函数被重载的特征: 在同一个类中; 函数名字相同; 参数不同; virtual 关键字可有可无。
2). 覆盖是指派生类函数覆盖基类函数,特征是: 分别位于派生类与基类; 函数名字相同; 参数相同; 基类函数必须有 virtual 关键字。
3). “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: 函数同名,参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 函数同名,参数相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。