h1

Конструктор копии при передаче объекта в функцию

Август 5, 2010

Для надлежащей обработки объектов типа myclass при их передаче функции в качестве аргументов используются констукторы копии.

Исходный код:

//use the copy constructor for determining the parametr
#include <iostream>
#include <cstdlib>
using namespace std;

class myclass {
int *p;
public:
myclass(int i); //ordinary constructor
myclass(const myclass &ob); //copy constructor
~myclass();
int getval() { return *p; }
};

myclass::myclass(const myclass &obj)
{
p = new int;
*p = *obj.p; //value of copy
cout << «Called copy constructor.\n»;
}

myclass::myclass(int i)
{
cout << «Allocation of memory addressable pointer p.\n»;
p = new int;
*p = i;
}

myclass::~myclass()
{
cout << «Free memory addressable pointer p.\n»;
delete p;
}

void display(myclass ob)
{
cout << ob.getval() << ‘\n’;
}

int main()
{
myclass a(10);

display(a);

cin.get();
return 0;
}

Реклама

One comment

  1. myclass(const myclass &ob); //copy constructor

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

    myclass::myclass(const myclass &obj)
    {
    p = new int;
    *p = *obj.p; //value of copy
    cout << “Called copy constructor.\n”;
    }



Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: