Снова о =default.

Nov 29, 2015 23:39

Я уже писал о внезапных плюшках =default. Да и Скотт Мейерс им целую главу в новой книге посвятил. Но тут пришло понимание пары тонкостей ( Read more... )

c++11, c++, 2гис

Leave a comment

Comments 2

yurikhan November 30 2015, 15:56:22 UTC

//: test1.cpp
#include

class Foo
{
public:
explicit Foo(int x) : x_(x) {}
Foo(const Foo& other) = default;
Foo& operator=(const Foo& other) = default;
~Foo() = default;

int get() const { return x_; }
private:
int x_;
};

int main()
{
Foo foo(42);
auto copy = foo;
copy = foo;
std::cout << copy.get() << "\n";
}
//# test1.cpp

$ g++ -o test1 -std=c++11 test1.cpp
$ gdb ./test1
(gdb) break Foo::
Foo(int)
get() const
(gdb) break Foo::

//: test2.cpp
#include

class Foo
{
public:
explicit Foo(int x);
Foo(const Foo& other);
Foo& operator=(const Foo& other);
~Foo();

int get() const;
private:
int x_;
};

Foo::Foo(int x) : x_(x) {}
Foo::Foo(const Foo&) = default;
Foo& Foo::operator=(const Foo&) = default;
Foo::~Foo() = default;
int Foo::get() const { return x_; }

int main()
{
Foo foo(42);
auto copy = foo;
copy = foo;
std::cout << copy.get() << "\n";
}
//# test2.cpp

$ g++ -o test2 -std=c++11 test2.cpp
$ gdb ./test2
(gdb) break Foo::~Foo ( ... )

Reply

droids_life December 1 2015, 17:17:15 UTC
Ништяк. Надо ещё на VS 2015 проверить.

Reply


Leave a comment

Up