我鞋呐1989 2015-01-04 14:58 采纳率: 0%
浏览 5026

C++ list赋值和类的运算符重载

刚刚发现了个问题,一直卡着我
class CA
{
public:
CA(){}
~CA(){}

public:
VOID
operator = ( CA& msg )
{
dwvalue = msg.dwvalue;
}

private:

DWORD dwvalue;

};

VOID
Fuck1(
OUT list& bb
)
{
list< CA > aa;
CA a;
CA b;
aa.push_back(a);
aa.push_back(b);

// list< CA > cc = aa;
bb = aa;
}

VOID
RegisteFunction(
VOID
)
{
list< CA > bb;
Fuck1( bb );

return;

}

我要是以上面的写法 是编译不过的,
有两种方法,第一种 :把 fuck1中的bb=aa去掉,改成list< CA > cc = aa;这种写法,就可以编译通过,
第二种,把类的运算符重载改成operator = ( CA* msg ),也是可以编译通过的
当然 还可以把重载运算符去掉。。。但是 我其实是想做一个list的赋值操作,而且那个类是定义好的,里面需要有个重载运算符的操作,
所以我想问问:
1、 list< CA > cc = aa方式和先声明一个list cc; 再做 cc=aa;的操作有什么区别?
2、运算符重载上我看都是用的引用,指针的写法可以吗?有什么区别?

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-01-04 15:08
    关注

    list< CA > cc = aa方式
    ---调用你的拷贝构造函数

    和先声明一个list cc; 再做 cc=aa;
    --- 调用你的operator=

    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler