Bra_Hancock 2017-07-28 03:36 采纳率: 0%
浏览 1942

C++ 复制构造函数形参必须是const吗?等3个问题

下例中,复制构造函数如果不加const会出错,error C2558: class 'Asdf' : no copy constructor available or copy constructor is declared 'explicit'。
(1)我传的asd1不是个临时对象,为什么需要const?
(2)看不出复制构造函数为什么效率比移动构造函数低。
(3)我想把对象本身加到vector中,但是不能以引用形式传?只能用指针?
用的是VS2010的编译器。
求大神详解。谢谢。

#include <iostream>
#include <vector>

using namespace std;

class Asdf
{
public:
    Asdf()
    {
        cout << "Constructor." << endl;
    }

    Asdf(Asdf & asdf1)                //(1)
    {
        cout << "Copy Constructor." << endl;
    }

    Asdf(Asdf && asdf1)           //(2)
    {
        cout << "Move Constructor." << endl;
    }
    int aa;
};

int main()
{
    /*
    vector<Asdf *> vector1;               //(3)
    Asdf * asd1 = new Asdf();
    asd1->aa = 9;
    vector1.push_back(asd1);
    asd1->aa = 10;
    cout << vector1[0]->aa << endl;
    */
    vector<Asdf> vector1;
    Asdf asd1;
    asd1.aa = 9;
    cout << &asd1 << endl;
    vector1.push_back(asd1);                      //(1)
    vector1.push_back(move(asd1));               //(2)
    asd1.aa = 10;
    cout << vector1[0].aa << endl;

    return 0;
}

  • 写回答

4条回答 默认 最新

  • YXTS122 2017-07-28 03:39
    关注

    不一定,这个跟编译器有关。。。。。。。。。。。。。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能