#include <iostream> #include <vector> #include <memory> #include <cstdio> #include <fstream> #include <cassert> #include <functional> struct B { virtual void bar() { std::cout << "B::bar\n"; } virtual ~B() = default; }; struct D : B { D() { std::cout << "D::...
void do_with_cat(unique_ptr<Cat> c){ c->cat_info(); } int main(){ unique_ptr<Cat> c1 = make_unique<Cat>(); do_with_cat(c1); //会报错,因为unique指针只能有一个指针管理内存 不可拷贝 do_with_cat(move(c1)); //使用move 转换指针所有权 c1->cat_info();//程序崩溃 因为所有权转...
简介: 【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?面试官考察意图 面试官在提出这个问题时,可能想要考察应聘者的以下几个方面: C++基础知识:应聘者是否理解智能指针的概念和用法,这是最基本的要求。 C++内存管理能力:智能指针是处理内存管理的重要工具,对其的理解程度反映了应聘者处理内存管理问题的能力。 了解...
二师兄:智能指针是C++11引入的类模板,用于管理资源,行为类似于指针,但不需要手动申请、释放资源,所以称为智能指针。 面试官:C++11引入了哪些智能指针? 二师兄:三种,分别是shared_ptr、unique_ptr、和weak_ptr。 面试官:说一说三种指针的特征及用途。 二师兄:好的。shared_ptr使用了引用计数(use count)技术,当复...
因为C++使用内存的时候很容易出现野指针、悬空指针、内存泄露的问题。所以C++11引入了智能指针来管理内存。有四种: auto_ptr:已经不用了 unique_ptr:独占式指针,同一时刻只能有一个指针指向同一个对象 shared_ptr:共享式指针,同一时刻可以有多个指针指向同一个对象 ...
C代码中引用C++代码有时候会报错为什么? 静态多态有什么?虚函数原理 虚表是什么时候建立的 为什么要把析构函数设置成虚函数? map为啥用红黑树不用avl树?(几乎所有面试都问了map和unordered_map区别) inline 失效场景 C++ 中 struct 和 class 区别 如何防止一个头文件 include 多次 ...
使用场景限制:虽然智能指针适用于大多数需要自动内存管理的场景,但在某些特定情况下(如需要直接操作裸指针的低级编程、与C代码互操作等),手动管理内存可能更为灵活。 控制粒度:智能指针提供了一种相对粗粒度的内存管理方式,它可能无法满足某些需要精细控制内存使用情况的场景。
C/C++ 智能指针简单剖析 导读 最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。
转载:面试时实现智能指针 #include<iostream> #include<cstdio> using namespace std; template<typename T> class SmartPointer { public: //构造函数 SmartPointer(T* ptr) { ref = ptr; ref_count = (unsigned int*)malloc(sizeof(unsigned)); *ref_count = 1; } //拷贝构造函数 SmartPointer(const ...
【C语言初阶】:经典面试题之交换两个整形变量的值 【问题描述】:给定两个整形变量,然后交换两个变量的值。 【程序设计】: 方式一:定义一个临时变量tmp,然后根据临时变量交换两个变量的值。 方式二:不设立临时变量,用加法操作交换两个变量的值(也可以用乘法,原理一样,这里就不多赘述)。 方式三:用异或运算交换...