C++面试常见问题
这里我们将看到一些重要的C++面试问题。
C和C++有什么区别?
要点 | C | C++ |
---|---|---|
简介 | C语言由丹尼斯·里奇在1969年左右于AT&T贝尔实验室开发。 | C++由Bjarne Stroustrup于1979年开发。 |
语言类型 | 如前所述,C是过程式编程语言。 | 另一方面,C++支持过程式和面向对象编程范式。 |
OOPs特性支持 | 由于C不支持OOPs概念,因此它不支持多态性、封装和继承。 | C++作为面向对象编程语言,支持多态性、封装和继承。 |
数据安全 | 由于C不支持封装,数据表现为自由实体,可以被外部代码操作。 | 另一方面,在C++中,封装隐藏了数据,以确保数据结构和运算符按预期使用。 |
驱动类型 | C通常被称为函数驱动语言。 | 另一方面,C++被称为对象驱动语言。 |
支持的特性 | C不支持函数和运算符重载,也没有命名空间特性和引用变量功能。 | 另一方面,C++支持函数和运算符重载,也有命名空间特性和引用变量功能。 |
指针和引用有什么区别?
指针和引用之间的主要区别在于:
引用用于以另一个名称引用现有变量,而指针用于存储变量的地址。
引用不能赋值为null值,但指针可以。
引用变量可以通过值传递来引用,而指针可以通过引用传递来引用。
引用必须在声明时初始化,而指针则不必。
引用与原始变量共享相同的内存地址,但也占用堆栈上的一些空间,而指针拥有其自身的内存地址和堆栈上的大小。
什么是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++中的this指针?
C++中的每个对象都可以通过一个重要的指针(this指针)访问其自身的地址。this指针是所有成员函数的隐式参数。因此,在成员函数内部,this可以用来引用调用对象。
友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。
让我们尝试以下示例来理解this指针的概念:
示例
#include <iostream> using namespace std; class Box { public: // Constructor definition Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout <<"Constructor called." << 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; }
输出
Constructor called. Constructor called. Box2 is equal to or larger than Box1
广告