Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- class Noisy
- {
- public:
- Noisy() : i_{0}
- {
- std::cout << "Noisy default ctor\n";
- count++;
- }
- explicit Noisy (int i) : i_{i}
- {
- std::cout << "Noisy{" << i << "} ctor\n";
- count++;
- }
- Noisy (Noisy const &o) : i_{o.i_}
- {
- std::cout << "Noisy copy ctor " << i_ << "\n";
- count++;
- }
- Noisy& operator= (Noisy const &o)
- {
- if (this == &o)
- std::cout << "Noisy self-(copy assignment) " << i_ << "\n";
- else
- {
- i_ = o.i_;
- std::cout << "Noisy copy assignment " << i_ << "\n";
- }
- return *this;
- }
- Noisy (Noisy&& o) : i_{o.i_}
- {
- o.i_ = -1;
- std::cout << "Noisy move ctor" << i_ << "\n";
- }
- Noisy& operator= (Noisy&& o)
- {
- if (this == &o)
- std::cout << "Noisy self-(move assignment) " << i_ << "\n";
- else
- {
- i_ = o.i_;
- o.i_ = -1;
- std::cout << "Noisy move assignment " << i_ << "\n";
- }
- return *this;
- }
- ~Noisy()
- {
- std::cout << "Noisy dtor " << i_ << "\n";
- count--;
- }
- static void report()
- {
- std::cout << count << " instance(s).\n";
- }
- private:
- int i_;
- static int count;
- };
- int Noisy::count = 0;
- int main()
- {
- std::vector<Noisy> vec;
- vec.reserve (1000);
- Noisy n1(1);
- vec.emplace_back(n1);
- Noisy n2(2);
- vec.push_back(n2);
- vec.emplace_back(Noisy(3));
- vec.push_back (Noisy (4));
- vec.emplace_back (5);
- }
Add Comment
Please, Sign In to add comment