Livejournal
Log in
Post
Friends
My journal
droids_life
Снова о =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
Comments 2
//: 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
Reply
Leave a comment