C++ list赋值和类的运算符重载-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2016-03-05 13:57:13 2740 4

刚刚发现了个问题,一直卡着我
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、运算符重载上我看都是用的引用,指针的写法可以吗?有什么区别?

C++
取消 提交回答
全部回答(4)
  • 游客duzwdtzqsaq3i
    2020-08-03 20:13:37

    引用只是为了减少函数调用时的构造拷贝消耗罢了

    0 0
  • nothingfinal
    2019-07-17 18:53:21

    using namespace std;

    class CA
    {

    public:
    CA(){}
    ~CA(){}
    public:
    CA& operator = (const CA& msg )
    {
    dwvalue = msg.dwvalue;
    }
    private:
    int dwvalue;
    };
    void Fuck(list< CA >& bb)
    {

    list< CA > aa;
    CA a;
    CA b;
    aa.push_back(a);
    aa.push_back(b);
    bb = aa;
    }

    int main(int argc, char* argv[])
    {

    cout << "11" << endl;
    }
    赋值运算符重载错误

    0 0
  • xumaojun
    2019-07-17 18:53:21

    1、第一种调用的是拷贝构造函数,第二种调用的是构造函数和赋值运算符
    2、运算符操作的值还是指针


    include

    include

    using namespace std;

    class CA
    {

    public:
    CA(){}
    ~CA(){}
    public:
    CA& operator = (const CA& msg )
    {
    dwvalue = msg.dwvalue;
    }
    private:
    int dwvalue;

    };
    void Fuck(list< CA >& bb)
    {

    list< CA > aa;
    CA a;
    CA b;
    aa.push_back(a);
    aa.push_back(b);
    bb = aa;

    }

    int main(int argc, char* argv[])
    {

    cout << "11" << endl;

    }
    赋值运算符重载错误


    using namespace std;

    class CA
    {

    public:
    CA(){}
    ~CA(){}
    public:
    CA& operator = (const CA& msg )
    {
    dwvalue = msg.dwvalue;
    }
    private:
    int dwvalue;
    };
    void Fuck(list< CA >& bb)
    {

    list< CA > aa;
    CA a;
    CA b;
    aa.push_back(a);
    aa.push_back(b);
    bb = aa;
    }

    int main(int argc, char* argv[])
    {

    cout << "11" << endl;
    }
    赋值运算符重载错误

    0 0
  • a123456678
    2019-07-17 18:53:21

    1、 list< CA > cc = aa方式和先声明一个list cc; 再做 cc=aa;的操作有什么区别?
    第一种调用的是拷贝构造函数,第二种调用的是构造函数和赋值运算符。
    2、都可以,运算符重载说白了就是函数,你参数定义的不同,就是调用方式有区别。

    0 0
添加回答
相关问答

1

回答

Python的list( tup )中参数tup代表什么意思呢?

2021-11-06 12:19:19 198浏览量 回答数 1

1

回答

Python列表函数cmp(list1, list2)的作用是什么?

2021-11-04 22:20:35 177浏览量 回答数 1

1

回答

python中list(map(str, [1, 2, 3]))的执行结果是什么呀?

2021-11-02 20:17:35 774浏览量 回答数 1

1

回答

python的数据类型list中的sort()功能是什么?

2021-11-02 21:16:13 343浏览量 回答数 1

1

回答

java的Collections类的void shuffle(List list)方法的作用是什么?

2021-11-01 21:18:13 115浏览量 回答数 1

1

回答

Python程序中类的使用顺序是怎么样的呢?

2021-11-02 16:21:54 101浏览量 回答数 1

1

回答

python的数据类型list中的del功能是什么?

2021-11-02 21:14:04 365浏览量 回答数 1

1

回答

[@小川游鱼][¥20]jdk高版本的序列化和其它序列化如marshalling ,hessian等序列化工具在性能和序列化之后的字节大小这两个方面相比怎么样?

2018-12-10 18:13:14 2541浏览量 回答数 1

1

回答

byte或short类型赋值的小问题

2016-05-31 11:43:27 2002浏览量 回答数 1

1

回答

jsp页面传递List的数据到后台的问题

2016-03-05 09:12:25 2210浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载