C++ C++;:使用哪个构造函数? #包括 使用名称空间std; 班级学生{ 公众: students();//默认构造函数 学生(const students&s1);//复制构造函数 void setScore(双p){score=p;}//分数设置器 学生运算符+(const students&s2)const;//定义学生+学生 私人: double score;//score变量 }; int main(){ cout

C++ C++;:使用哪个构造函数? #包括 使用名称空间std; 班级学生{ 公众: students();//默认构造函数 学生(const students&s1);//复制构造函数 void setScore(双p){score=p;}//分数设置器 学生运算符+(const students&s2)const;//定义学生+学生 私人: double score;//score变量 }; int main(){ cout,c++,C++,因为,total和s3是同一个对象 编辑:这实际上是RVO,而不是复制省略值得一提的是(在g++/clang++)使用编译-fno elide构造函数会禁用复制省略,并允许查看所有的构造函数。请参阅 #include <iostream> using namespace std; class students { public: students(); //default constructor stud

因为,
total
s3
是同一个对象

编辑:这实际上是RVO,而不是复制省略

值得一提的是(在g++/clang++)使用
编译-fno elide构造函数
会禁用复制省略,并允许查看所有的构造函数。请参阅
#include <iostream>
using namespace std;
class students {
        public:
                students(); //default constructor
                students(const students & s1); //copy constructor 
                void setScore(double p) { score = p; } //score setter
                students operator+(const students & s2) const; //define students + students
        private:
                double score; //the score variable
};

int main() {
        cout << "omidh object ";
        students omidh;
        cout << "negin object ";
        students negin;
        negin.setScore(2.0);
        omidh.setScore(3.0);
        cout << "total object ";
        students total = omidh + negin;
}

students students::operator+(const students & s2) const {
        cout << "s3 object ";
        students s3;
        s3.score = score + s2.score;
        return s3;
}

students::students() {
        cout << " used default constructor\n";
}

students::students(const students & s1) {
        cout << " used copy constructor\n";
}