当前位置:实例文章 » JAVA Web实例» [文章]C++ 常见面试题

C++ 常见面试题

发布人:shili8 发布时间:2025-01-18 01:57 阅读次数:0

**C++ 常见面试题**

作为一名程序员,面试是每个人的必经之路。以下是一些常见的 C++ 面试题,包括一些代码示例和注释。

###1.什么是指针?

**答案:**
在 C++ 中,指针是一个变量,它存储的是一个内存地址,而不是实际的值。通过使用指针,可以间接访问和操作内存中的数据。

**示例代码:**

cppint x =10;
int* p = &x; // p 是 x 的指针// 使用指针访问 x 的值cout << *p << endl; // 输出10

注释:`&` 运算符用于获取一个变量的地址,`*` 运算符用于解引用一个指针。

###2.什么是类和对象?

**答案:**
在 C++ 中,类是一种用户定义的数据类型,它可以包含成员变量(属性)和成员函数(方法)。对象是类的一个实例,它具有自己的状态和行为。

**示例代码:**
cppclass Person {
public:
 string name;
 int age;

 void sayHello() {
 cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl;
 }
};

int main() {
 Person p1; // 创建一个 Person 对象 p1.name = "John";
 p1.age =30;

 p1.sayHello(); // 输出 "Hello, my name is John and I am30 years old."

 return0;
}

注释:`class` 关键字用于定义一个类,`public:` 块用于声明类的公共成员。

###3.什么是构造函数和析构函数?

**答案:**
在 C++ 中,构造函数是一个特殊的成员函数,它用于初始化一个对象的状态。当一个对象被创建时,会自动调用其构造函数。析构函数也是一个特殊的成员函数,它用于释放一个对象占用的资源,当一个对象被销毁时,会自动调用其析构函数。

**示例代码:**
cppclass Person {
public:
 string name;
 int age;

 // 构造函数 Person(string n, int a) : name(n), age(a) {}

 // 析构函数 ~Person() { cout << "Person object destroyed." << endl; }
};

int main() {
 Person p1("John",30); // 调用构造函数 return0;
}

注释:`:` 运算符用于初始化一个成员变量,`~` 运算符用于声明析构函数。

###4.什么是运算符重载?

**答案:**
在 C++ 中,运算符重载是一种机制,它允许用户定义类的运算符(如 `+`, `-`, `*`, `/`) 的行为。通过重载运算符,可以使类的对象能够使用这些运算符进行操作。

**示例代码:**
cppclass Complex {
public:
 double real;
 double imag;

 // 构造函数 Complex(double r, double i) : real(r), imag(i) {}

 // 重载加法运算符 Complex operator+(const Complex& c) const {
 return Complex(real + c.real, imag + c.imag);
 }
};

int main() {
 Complex c1(3.0,4.0);
 Complex c2(2.0,5.0);

 Complex result = c1 + c2; // 调用重载的加法运算符 return0;
}

注释:`operator+` 是一个友元函数,它用于重载 `+` 运算符。

###5.什么是多态性?

**答案:**
在 C++ 中,多态性是一种机制,它允许不同类型的对象共享相同的接口和行为。通过使用虚函数,可以使类的派生类能够重载其父类的成员函数。

**示例代码:**
cppclass Shape {
public:
 virtual void draw() =0; // 虚函数 // 构造函数 Shape() {}
};

class Circle : public Shape {
public:
 void draw() override { cout << "Drawing a circle." << endl; }
};

class Rectangle : public Shape {
public:
 void draw() override { cout << "Drawing a rectangle." << endl; }
};

int main() {
 Shape* shapes[2] = {new Circle(), new Rectangle()}; // 创建一个 Shape 对象数组 for (Shape* shape : shapes) { // 使用多态性访问各个对象的 draw 函数 shape->draw();
 }

 return0;
}

注释:`virtual` 关键字用于声明虚函数,`=0` 表示该函数必须在派生类中重载。

以上就是一些常见的 C++ 面试题和示例代码。通过理解这些概念和机制,可以帮助你更好地掌握 C++ 的基础知识和高级特性。

其他信息

其他资源

Top