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: " <&l

本文详细探讨了C++中类对象的拷贝构造、移动构造、初始化和赋值的区别与联系。通过测试代码展示了在不同情况下,如何绕过拷贝/移动构造函数,并介绍了返回值优化(RVO/NRVO)的概念。此外,还强调了初始化和赋值之间的关键差异,以及初始化过程中编译器可能进行的优化。
最低0.47元/天 解锁文章
562

被折叠的 条评论
为什么被折叠?



