标题:vector& operator=(const vector&); 求解释
只看楼主
czyhzc
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-3-7
结帖率:70%
已结贴  问题点数:10 回复次数:5 
vector& operator=(const vector&); 求解释
class vector {
    int sz;
    double* elem;
    void copy(const vector& arg);     // copy elements from arg into *elem
public:
    vector(int s) :sz(s), elem(new double[s]) { } // constructor
    ~vector() { delete[] elem; }                  // destructor
   // int size() const { return sz; }               // the current size
    double get(int n) { return elem[n]; }         // access: read
    void set(int n, double v) { elem[n]=v; }      // access: write
    vector& operator=(const vector&);            
};
请问各位vector& operator=(const vector&); 这句从语法上怎么解释,谢谢
搜索更多相关主题的帖子: double access elements current return 
2012-03-15 15:06
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
得分:5 
就是把一个vector赋值给另外一个呀,用引用是因为效率。const是因为防止被意外改变。

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-15 15:10
czyhzc
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-3-7
得分:0 
vector& vector::operator=(const vector& a)
// make this vector a copy of a
{
    double* p = new double[a.sz];     // allocate new space
    copy(a);                          // copy elements
    delete[ ] elem;                   // deallocate old space
    elem = p;                         // now we can re-set elem
    sz = a.sz;
    return *this;                     
}
这样可以吗?
2012-03-15 15:24
czyhzc
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-3-7
得分:0 
vector& operator=(const vector&); 那此时的operator只是一个vector&的变量,那它怎么又可以定义啊???
2012-03-15 15:27
榴紫丫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:135
注 册:2011-11-3
得分:5 
这个是在 vector 类中  对  = 运算符加载(operator)函数的说明,const vector&);
是对类vector成员引用作为,而返回值也是类的成员vector&
2012-03-15 20:42
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
得分:0 
以下是引用czyhzc在2012-3-15 15:24:29的发言:

vector& vector::operator=(const vector& a)
// make this vector a copy of a
{
    double* p = new double[a.sz];     // allocate new space
    copy(a);                          // copy elements
    delete[ ] elem;                   // deallocate old space
    elem = p;                         // now we can re-set elem
    sz = a.sz;
    return *this;                     
}
这样可以吗?
可以,但是不好。
最好在函数的开始加上是不是赋值给自身的判断,如果是直接返回
if(this == &a) return *this;

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-17 12:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-363270-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.543894 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved