首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++一分钟之-返回值优化与Move Semantics

    本文深入浅出地探讨这两个概念,分析它们解决的问题、常见误区以及如何有效利用它们。 返回值优化(RVO) 基本概念 返回值优化是一种编译器优化技术,用于消除临时对象的创建和销毁。...避免策略:编写代码时保持简洁,尽量让编译器有机会应用RVO;同时,了解并使用C++11入的移动语义作为补充。...移动语义 基本概念 移动语义允许资源的所有权从一个对象转移到另一个对象,而不是复制资源。这主要通过右值引用和std::move函数实现。...{ public: String(const char* str = "") : data(new char[strlen(str) + 1]) { strcpy(data, str); }...() { delete[] data; } private: char* data; }; String generateString() { String tmp("Hello, World

    23410

    提升面试成功率:深入理解 C++ 11 新特性

    也是面试容很容易被问到一个问题,下面我简要介绍一些C++11的新特性 自动类型推导 C++11入了auto关键字,可以让编译器自动推导变量的类型。...例如: auto i = 42; // 推导为int类型 auto d = 3.14; // 推导为double类型 auto s = "hello"; // 推导为const char*类型 lambda...例如: class MyString { public: MyString() : data_(nullptr), size_(0) {} MyString(const char* str...智能指针 C++11入了智能指针,可以方便地管理动态分配的内存,避免内存泄漏和悬空指针的问题。C++11中有两种智能指针:std::unique_ptr和std::shared_ptr。...(args) << std::endl; // 打印参数的数量 } f(1, 2, 3); // 打印3 f("hello", 3.14); // 打印2 线程支持库 C++11入了线程支持库,可以方便地创建和管理线程

    1.1K20

    std::string继承之番外篇

    群里经常有这样一个现象,当有新人进群的时候,总会有个面试环节,经常问的一个问题就是std::string能否被继承,一开始可能是技术问题,后面多了,就被玩成了梗,不过梗归梗,今天借助这篇文章,聊聊继承相关的...为了能尽早的发现问题所在,C++11入了新的关键字override: In a member function declaration or definition, override specifier...不过,看了gcc11.2的源码,也尝试在本地对std::string继承尝试了下,是可以的(此处仅针对能否继承,撇开内存泄漏等其它因素哈)。...::basic_ostream >& std::__ostream_insert >(...std::basic_ostream >&, char const*, long) 通过上述汇编,可以看出,虽然void f()是一个虚函数,但经过编译器分析有化后

    35610
    领券