c精选面试题 一定要了解
更新时间:2023-09-30c++精选面试题
c++是一种高效而又底层的编程语言,也是面试中经常涉及的一个重要领域。本文将涵盖一些c++中常见的面试问题并提供详细答案。
1. C++中的多态
多态是面向对象编程的一个重要特性,能够使得不同的对象以不同的方式响应相同的消息。在c++中,多态有两种类型,即静态多态和动态多态。静态多态是通过函数重载或模板实现的。例如:
class Test{ public: void print(int x){ std::cout<<"int: "<动态多态是通过虚函数实现的。例如:
class Base{ public: virtual void print(){ std::cout<<"I'm Base\n"; } }; class Derived: public Base{ public: void print(){ std::cout<<"I'm Derived\n"; } }; Base * b=new Derived(); b->print();2. C++中的智能指针
在c++中,智能指针可以自动管理内存,避免内存泄漏等问题。共有四种类型的智能指针:unique_ptr、shared_ptr、weak_ptr和auto_ptr(C++11之前)。其中,unique_ptr是独占所有权,只能有一个指针指向它。例如:
std::unique_ptr<int> up1(new int(1)); std::unique_ptr<int> up2=std::move(up1);//转移所有权shared_ptr则允许多个指针指向同一个对象,由引用计数来维护。例如:
std::shared_ptr<int> sp1(new int(2)); std::shared_ptr<int> sp2=sp1; //引用计数加13. C++中的函数指针
在c++中,函数的名字并不是指向函数的指针,而是在编译时被转化为函数的入口地址。因此,函数指针就是指向函数入口地址的指针。例如:
void print(std::string s){ std::cout<4. C++中的const关键字
const关键字用于声明不可修改的变量、不可调用非const成员函数的const对象以及函数形参的const属性。例如:
const int a=5; a=6;//错误,a是const变量 class Test{ public: void print() const{ std::cout<<"I'm const object\n"; } }; Test t; const Test ct; t.print(); //调用普通成员函数 ct.print(); //调用const成员函数 void func(const int &x){ x=5; //错误,x是const引用 }总结
本文涵盖了一些c++中常见的面试问题,包括多态、智能指针、函数指针和const关键字。对于想要成为一名成功的c++程序员的人来说,这些问题可以帮助他们更好地理解c++的核心概念,从而在面试中更好地表现。