复制构造函数和operator=的一点注意事项
来源:互联网 发布:java程序员主要做什么 编辑:程序博客网 时间:2024/06/05 07:19
class GameBoard{public: GameBoard() { std::cout << "GameBoard()" << std::endl; } GameBoard(const GameBoard&) { std::cout << "GameBoard(const GameBoard&)" << std::endl; } GameBoard& operator=(const GameBoard& other) { std::cout<< "GameBoard& operator=()" << std::endl; return *this; } ~GameBoard() { std::cout << "~GameBoard" << std::endl; }};class Game{public: Game() { std::cout << "Game()" << std::endl; } ~Game() { std::cout << "~Game()" << std::endl; } //显示调用子对象复制构造函数 Game(const Game& other):gb(other.gb) { std::cout << "Game(const Game& other)" << std::endl; } Game& operator=(const Game& other) { gb = other.gb; //显示调用子对象赋值函数 std::cout << "Game& operator=()" << std::endl; return *this; }private: GameBoard gb;};class Checkers : public Game{public: Checkers() { std::cout << "Checkers()" << std::endl; } ~Checkers() { std::cout << "~Checkers()" << std::endl; } Checkers(const Checkers& other):Game(other) //显示调用基类复制构造函数 { std::cout << "Checkers(const Checkers& other)" << std::endl; } Checkers& operator=(const Checkers& other) { Game::operator=(other); //显示调用基类赋值函数 std::cout << "Checkers& operator=()" << std::endl; }};
总结:
1.复制构造函数默认调用基类的默认构造函数,不会自动调用基类复制构造函数。当派生类写拷贝构造函数时,要显示调用基类的拷贝构造函数,如下:
Derived(const Derived& d):Base(d)
{
}
2.operator= 不会自动调用基类的operator=,当为派生类写赋值操作符,要显示调用基类版本,如下:
Derived& operator=(const Derived& d)
{
Base::operator=(d);
}
1 0
- 复制构造函数和operator=的一点注意事项
- C++的构造函数, 复制构造函数 和operator =
- 复制构造函数和operator=
- [原创]关于C++的构造函数, 复制构造函数 和 operator =
- 关于C++的构造函数, 复制构造函数 和 operator =
- 一点关于复制构造函数的问题
- 论C++中复制构造函数与operator=
- 关于copy构造函数和operator=
- C++拷贝构造函数和operator=
- 拷贝构造和operator=的区别
- 复制操作符“operator=”注意事项
- C++中复制构造函数有关的一点问题
- \t\tC++中复制构造函数有关的一点问题
- 拷贝构造函数, operator =
- 析构函数、复制构造函数,operator=以及深拷贝浅拷贝问题
- C++拷贝构造函数和赋值操作(operator=)
- C++类的构造函数和复制构造函数
- 1.构造函数和复制构造函数相关的初始化
- 遍历所有被选中的radio的值
- 关于Java内部类的初始化
- <Principles of fMRI 1>课程笔记6--fMRI的噪音来源
- void和void*指针的解析
- 不可重入函数测试
- 复制构造函数和operator=的一点注意事项
- 学习
- 【Python模块】functools —— 作用于可调用对象的高阶函数集合
- 知识库--Digester+Rules(73)
- codeforces-754【A思维】
- Spring中@Async用法总结
- 日常
- 欲望清单
- Sip协议