常见的C++面试问题集1

C和C++有什么区别? 1) C++是C的一种超集,除了很少的例外之外,大多数C程序都是这样的(参见 在C++中也有工作。 2) C是一种程序化的编程语言,但是C++支持程序和面向对象的编程。 3) 由于C++支持面向对象编程,它支持诸如函数重载、模板、继承、虚拟函数、友元函数等功能。这些特性在C中是不存在的。 4) C++支持在语言层中进行异常处理,在C异常处理中,以传统的IF其他方式进行。 5) C++支持 推荐人 , C没有。 6) 在C语言中,scanf()和printf()主要用于输入/输出。C++主要使用流来执行输入和输出操作。cin是标准输入流,cout是标准输出流。

null

还有很多不同之处,上面列出了主要的不同之处。

引用和指针之间有什么区别? 引用和指针都可以用来更改一个函数在另一个函数中的局部变量。当作为参数传递给函数或从函数返回时,这两个函数还可以用来保存大对象的复制,以获得效率增益。 尽管有上述相似之处,但引用和指针之间仍存在以下差异。

引用不如指针强大 1) 一旦创建了一个引用,以后就不能引用另一个对象;它无法重置。这通常是通过指针实现的。 2) 引用不能为空。指针通常被设为空,以表明它们没有指向任何有效的东西。 3) 声明时必须初始化引用。指针没有这样的限制

由于上述限制,C++中的引用不能用于实现链表、树等数据结构,在爪哇中,引用没有上述限制,可以用于实现所有数据结构。Java中引用功能更强大是Java不需要指针的主要原因。 参考资料更安全、更易于使用: 1) 更安全:因为引用必须初始化,所以像野生指针这样的野生引用不太可能存在。仍有可能存在未提及有效位置的参考资料(请参见下面练习中的问题5和6) 2) 更易于使用:引用不需要解引用运算符来访问值。它们可以像正常变量一样使用只有在申报时才需要操作员。此外,对象引用的成员可以使用点运算符(’.’)访问,这与指针不同,指针需要使用箭头运算符(->)来访问成员。

什么是虚拟函数?写一个例子? 虚拟函数 与继承一起使用时,将根据指向或引用的对象的类型而不是指针或引用的类型来调用它们。换句话说,虚拟函数在运行时很晚才被解析。virtual关键字用于使函数虚拟。

编写运行时多态性(使用虚拟函数)的C++程序是必要的。 1) 基类和派生类。 2) 在基类和派生类中具有相同名称的函数。 3) 基类类型的指针或引用,指向或引用派生类的对象。

例如,在下面的程序中,bp是Base类型的指针,但对bp->show()的调用调用调用派生类的show()函数,因为bp指向派生类的对象。

C++

#include<iostream>
using namespace std;
class Base {
public :
virtual void show() { cout<< " In Base " ; }
};
class Derived: public Base {
public :
void show() { cout<< "In Derived " ; }
};
int main( void ) {
Base *bp = new Derived;
bp->show(); // RUN-TIME POLYMORPHISM
return 0;
}


输出:

In Derived

这个指针是什么? 这个 “这个”指针 作为隐藏参数传递给所有非静态成员函数调用,并且在所有非静态函数体中作为局部变量可用。”“指针是一个常量指针,它保存当前对象的内存地址。”此指针在静态成员函数中不可用,因为可以在没有任何对象(具有类名)的情况下调用静态成员函数。

我们可以“删除这个”吗? 看见 https://www.geeksforgeeks.org/delete-this-in-c/

什么是VTABLE和VPTR? vtable是一个函数指针表。它是按班级维护的。 vptr是指向vtable的指针。它是按对象维护的(参见此示例)。 编译器在两个位置添加额外代码,以维护和使用vtable和vptr。 1) 在每个构造函数中编写代码。此代码设置正在创建的对象的vptr。这段代码将vptr设置为指向类的vtable。 2) 带有多态函数调用的代码(如上面代码中的bp->show()。无论在何处进行多态调用,编译器都会插入代码,首先使用基类指针或引用查找vptr(在上面的示例中,由于指向或引用的对象是派生类型,因此会访问派生类的vptr)。一旦获取了vptr,就可以访问派生类的vtable。使用vtable可以访问和调用派生类函数show()的地址。

你可能还喜欢:

我们很快将覆盖更多的C++。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享