, , , .
: ++. C .
RAII:
void func(size_t n)
{
int* array = new int[n];
delete[] array;
}
void func(size_t n)
{
std::vector<int> array(n, 0);
}
: delete, . , new , , - .
void func(int* i);
void func(int& i);
, NULL ( ), (const).
:
void printSorted(std::vector<BigType> const& values)
{
std::vector<BigType*> references = from(values);
std::sort(references.begin(), references.end(), ByPointer());
std::transform(references.begin(), references.end(),
std::ostream_iterator<BigType>(std::cout, " "),
Dereference());
}
Object* find(Key const& key);
:
boost::optional<Object&> find(Key const& key);
.
clone Boost Cloneable:
struct Base
{
virtual ~Base() {}
virtual Base* clone() const = 0;
};
: . :
struct Derived: Base
{
virtual Derived* clone() const { return new Derived(*this); }
};
, Derived const&, , , , - Derived.
, , Smart Containers:
std::unique_ptr<Base> u = derived.clone();