常见C ++面试问题

在这里,我们将看到一些重要的C ++面试问题。

  • C和C ++有什么区别?

CC ++
介绍C由Dennis Ritchie于1969年左右在AT&T贝尔实验室开发。C ++由Bjarne Stroustrup于1979年开发。
语言类型如前 ,C是过程编程。另一方面,C ++支持过程和面向对象的编程范例。
OOP功能支持由于C不支持OOPs概念,因此它不支持多态性,封装和继承。C ++是一种面向对象的编程语言,它支持多态性,封装和继承。
数据安全由于C不支持封装,因此数据表现为自由实体,并且可以由外部代码操纵。另一方面,在C ++封装的情况下,将隐藏数据以确保按预期使用数据结构和运算符。
驱动类型C一般称为功能驱动语言。另一方面,C ++被称为对象驱动语言。
支持功能C不支持函数,并且运算符重载也没有命名空间功能和引用变量功能。另一方面,C ++支持函数和运算符重载,还具有命名空间功能和引用变量功能。
  • 指针和引用之间有什么区别?

指针和引用之间的主要区别是-

  • 引用用于引用另一个名称中的现有变量,而指针用于存储变量的地址。

  • 引用不能分配空值,但指针可以。

  • 引用变量可以按值传递,而指针可以引用但按引用传递。

  • 必须在声明时初始化引用,而在使用指针的情况下则不需要。

  • 引用与原始变量共享相同的内存地址,但也占用堆栈上的一些空间,而指针在堆栈上有其自己的内存地址和大小

  • 什么是C ++中的虚函数?

C ++中的虚函数用于创建基类指针和任何派生类的调用方法的列表,甚至不知道派生类对象的种类。虚函数在运行时解析得较晚。

如果基类中的虚函数声明为成员函数一次,则它在从该基类派生的每个类中均变为虚函数。因此,在声明虚拟基类函数的重新定义版本时,在派生类中不必使用关键字virtual。

示例

#include<iostream>
using namespace std;
class B {
   public:
   virtual void s() {
      cout<<" In Base \n";
   }
};
class D: public B {
   public:
   void s() {
      cout<<"In Derived \n";
   }
};
int main(void) {
   D d; // An object of class D
   B *b= &d; // A pointer of type B* pointing to d
   b->s(); // prints"D::s() called"
   return 0;
}

输出结果

In Derived

C ++中的这个指针是什么?

C ++中的每个对象都可以通过称为此指针的重要指针访问其自己的地址。this指针是所有成员函数的隐式参数。因此,在成员函数内部,这可以用于引用调用对象。

友元函数没有this指针,因为朋友不是类的成员。仅成员函数具有this指针。

让我们尝试以下示例以了解此指针的概念-

示例

#include <iostream>
using namespace std;
class Box {
   public:
   //构造函数定义
   Box(double l = 2.0, double b = 2.0, double h = 2.0) {
      cout <<"构造函数称为。" << endl;
      length = l;
      breadth = b;
      height = h;
   }
   double Volume() {
      return length * breadth * height;
   }
   int compare(Box box) {
      return this->Volume() > box.Volume();
   }
   private:
   double length; // Length of a box
   double breadth; // Breadth of a box
   double height; // Height of a box
};
int main(void) {
   Box Box1(3.3, 1.2, 1.5); // Declare box1
   Box Box2(8.5, 6.0, 2.0); // Declare box2
   if(Box1.compare(Box2)) {
      cout << "Box2 is smaller than Box1" <<endl;
   } else {
      cout << "Box2 is equal to or larger than Box1" <<endl;
   }
   return 0;
}

输出结果

构造函数称为。
构造函数称为。
Box2 is equal to or larger than Box1