C++:类的拷贝和移动、初始化和赋值
测试代码
《C++Primer》学到拷贝控制这一章开始有点犯晕,拷贝和移动的各种使用条件和限制很不好理解。同时,在使用类对象的时候,明显能够感觉到正如《C++Primer》中所写的,虽然初始化(尤其是拷贝初始化)和赋值看上去差不多,都使用=,但是二者区别实际上非常大。今天写了这样一段代码,结果很有意思:
//Message.h
#ifndef MESSAGE_H
#define MESSAGE_H
#include <iostream>
class Message {
public:
Message() {
std::cout << "normal construct: " << this << std::endl; }
Message(const Message&) {
std::cout << "copy construct: " << this << std::endl; };
Message(Message&&) noexcept {
std::cout << "move construct: " << this << std::endl; };
~Message