zoukankan      html  css  js  c++  java
  • 第27月第11天 右值引用

    1.

    拷贝的开销可以很大。举例来说,对于std::vector,像v2=v1这样的赋值通常包含一次函数调用,一次内存分配和一个循环。当我们确实需要一个vector的两份拷贝时,这当然是可接受的,然而很多情况下我们并不需要:我们常常将一个vector从一个地方复制到另一个地方,接着便覆写了旧的版本。考虑下面的代码:

    https://blog.csdn.net/steedhorse/article/details/6847937

    class A
    {
    private:
        int data;
    public:
        A(int i):data(i) { std::cout << "调用构造函数" << std::endl; }
        A(const A& other) {
            std::cout << "调用拷贝构造函数" << std::endl;
            data = other.data;
        }
        A& operator=(const A& other) {
            std::cout << "使用赋值运算符" << std::endl;
            data = other.data;
         return *this; }
    ~A() { std::cout << "调用析构函数" << std::endl; } }; int main() { A a(1); A b(2); vector<A> v1; v1.push_back(a); v1.push_back(b); vector<A> v2(boost::move(v1)); return 0; }
  • 相关阅读:
    结构型模式上
    创建型模式下
    创建型模式中
    创建型模式上
    设计模式总述
    Java中事件机制
    UI常用控件
    UITextField和UIViewConteoller
    UIScrollView 和 UIPageControl
    分栏视图控制器
  • 原文地址:https://www.cnblogs.com/javastart/p/10100954.html
Copyright © 2011-2022 走看看