C++ 如何在c++;

C++ 如何在c++;,c++,class,reference,C++,Class,Reference,据我所知,这是一个指针,*这是一个参考。因此,如果我有一个类Sample和一个类似的方法: Sample operator++(){ int i; for(i=0;i<this->length;i++){ this->array[i]+=1; } return *this; } 示例运算符++(){ int i; 对于(i=0;i长度;i++){ 此->数组[i]+=1; } 归还*这个; } 或者另一种方法是 Sample

据我所知,
这是一个指针,
*这是一个参考。因此,如果我有一个类
Sample
和一个类似的方法:

Sample operator++(){
    int i;
    for(i=0;i<this->length;i++){
        this->array[i]+=1;
    }
    return *this;
}
示例运算符++(){
int i;
对于(i=0;i长度;i++){
此->数组[i]+=1;
}
归还*这个;
}
或者另一种方法是

Sample &operator++(){
    int i;
    for(i=0;i<this->length;i++){
         this->array[i]+=1;
    }
    return *this;
}
Sample&operator++(){
int i;
对于(i=0;i长度;i++){
此->数组[i]+=1;
}
归还*这个;
}

在这两者之间,哪种方法是正确的?

第一种方法将使用复制构造函数。也就是说,你得到了一份副本


第二个将只返回一个引用。因此,只有一个对象将存在,并且不会进行复制

第一个对象将使用复制构造函数。也就是说,你得到了一份副本


第二个将只返回一个引用。因此,只存在一个对象,不进行复制

第二个是惯用的,您正在实现前缀
运算符+++
,它应该返回对self的引用。实际上,
*这是一个左值
示例
。没有参考资料。只有当
*此
绑定到最终返回值时,您才能获得引用。第二个习惯用法是您正在实现前缀
运算符+++
,它应该返回对self的引用。实际上,
*此
是一个左值
示例
。没有参考资料。只有当
*此
绑定到最终返回值时,您才能获得引用。如果您仍然怀疑答案:第二个答案。如果您仍然怀疑答案:第二个答案。