Написать программу, демонстрирующую технику перегрузки копирования конструктора? - PullRequest
0 голосов
/ 31 октября 2019

Я попытался объединить перегрузку конструктора и конструктор копирования, чтобы достичь решения вышеупомянутого вопроса

#include<iostream>
using namespace std;
class Area{
    public:
        float ar;
        Area(int l){
            ar=l*l;
        }
        Area(double r){
                ar=3.14*r*r;
          }
          void display(){
            cout<<ar<<endl;
          }
};
int main(){
    Area obj1(1);
    obj1.display();
    Area obj2(1.2);
    obj2.display();
    obj1=obj2;//here obj1=1.2 and it call the constructor area(double)
    obj1.display();//

}

, поэтому я завершил работу над кодом выше, и при компиляции была нулевая ошибка. Это правильно или неправильно?

1 Ответ

0 голосов
/ 31 октября 2019

Эта программа без проблем скомпилирована g ++. Какой компилятор вы используете? Этот код демонстрирует конструктор копирования и оператор присваивания

#include<iostream>
using namespace std;
class Area{
    private:
        float ar;
    public:
        Area(int l){
            cout<< "Area(int l)" <<endl;
            ar=l*l;
        }
        Area(double r){
            cout<< "Area(double r)" <<endl;
            ar=3.14*r*r;
        }
        void display(){
            cout<<ar<<endl;
        }
        Area(const Area& other) {
            cout<< "copy constructor" <<endl;
            ar = other.ar;
        }
        Area& operator=(const Area& other) {
            cout<< "assignment operator" <<endl;
            ar = other.ar;
            return *this;
        }
};
int main(){
    Area obj1(1); // Area(int l) is called
    obj1.display();

    Area obj2(1.2); // Area(double r) is called
    obj2.display();

    Area obj3(obj1); // Area(const Area& other) is called
    obj3.display();

    obj1=obj2; // operator=() is called
    obj1.display();
    return 0; // Return a code to operating system according to program state
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...