首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未打印移动构造函数注释

未打印移动构造函数注释
EN

Stack Overflow用户
提问于 2018-06-30 03:33:32
回答 1查看 76关注 0票数 0

我有一个小程序,如下所示:

代码语言:javascript
复制
    class boovector{
    private: int size;
            char *arr;
    public:
            boovector(){size=1;arr=new char[size];cout<<" boovector default constructor called"<<endl;}
            boovector(boovector &b)
            {
                cout<<"boovector copyconstructor called"<<endl;
                size = b.size;
                arr =  new char[size];
                strncpy(arr,b.arr,size);
            }
            boovector(boovector &&b)
            {
                cout<<"boovector move assignment operator called"<<endl;
                size =b.size;
                arr = b.arr;
                b.arr = nullptr;
            }
            ~boovector()
            {
                delete []arr;
            }

    };
    boovector createboovector()
    {
        boovector v;
        return v;
    }
    void foo(boovector v)
    {

    }
    int main(int argc, char *argv[])
    {
        boovector vet = createboovector();
        foo(vet);
        foo(createboovector());
        return 0;
    }

输出

代码语言:javascript
复制
boovector default constructor called
boovector copyconstructor called
boovector default constructor called

我希望在输出中看到名为的"boovector移动赋值操作符“。

如果我注释移动构造函数"boovector(boovector &&b)",我会得到编译器错误

代码语言:javascript
复制
  invalid initialization of non-const reference of type 'boovector&' from an 
  rvalue of type 'boovector'

我想了解move构造函数不被调用背后的逻辑。

EN

回答 1

Stack Overflow用户

发布于 2018-06-30 04:49:33

在我的MSVC 2017社区版上,生成的输出是:

代码语言:javascript
复制
 boovector default constructor called
boovector move assignment operator called
boovector copyconstructor called
 boovector default constructor called
boovector move assignment operator called

所以它的工作方式和预期的一样。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51108324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档