Конструктор копирования может выглядеть следующим образом:
Foo::Foo(const Foo& other) : a( new int( *other.a ) ), b( new int( *other.b ) )
{
}
Вот демонстрационная программа
#include <iostream>
class Foo {
public:
int *a, *b;
Foo( int x, int y ) : a( new int( x ) ), b( new int( y ) )
{
}
Foo( const Foo &other ) : a( new int( *other.a ) ), b( new int( *other.b ) )
{
}
};
int main()
{
Foo first(1,2);
Foo second(first);
std::cout << *first.a << ", " << *first.b << '\n';
std::cout << *second.a << ", " << *second.b << '\n';
return 0;
}
Его вывод
1, 2
1, 2
Все другие специальные функции-члены какнапример деструктор, я надеюсь, что вы определите себя.