C++中复制构造函数和隐式转换
2013-03-18 10:46
1036 查看
隐式转换可能发生在对象的初始化中(包括由赋值间接产生的初始化),不可能由赋值直接产生
MyClass()
-------------------------------
MyClass(int i)
-------------------------------
MyClass(const MyClass &c)
-------------------------------
MyClass(int i)
operator =(const MyClass &c)
-------------------------------
operator =(const MyClass &c)
-------------------------------
#include <iostream> using namespace std; class MyClass { public: MyClass(); MyClass(int i); MyClass(const MyClass &c); ~MyClass(); MyClass & operator = (const MyClass &c); private: int m_i; }; MyClass::MyClass() { m_i = 0; cout << "MyClass()" << endl; } MyClass::MyClass(int i) { m_i = i; cout << "MyClass(int i)" << endl; } MyClass::MyClass(const MyClass &c) { m_i = c.m_i; cout << "MyClass(const MyClass &c)" << endl; } MyClass::~MyClass() { } MyClass & MyClass::operator =(const MyClass &c) { m_i = c.m_i; cout << "operator =(const MyClass &c)" << endl; return *this; } int main() { MyClass c1; // MyClass() cout << "-------------------------------" << endl; MyClass c2 = 2; // MyClass(int i) 隐式转换 cout << "-------------------------------" << endl; MyClass c3 = c2;// MyClass(const MyClass &c) 隐式转换 cout << "-------------------------------" << endl; c1 = 2; // MyClass(int i) 隐式转换 // operator =(const MyClass &c) 无隐式转换 cout << "-------------------------------" << endl; c3 = c2; // operator =(const MyClass &c) 无隐式转换 cout << "-------------------------------" << endl; return 0; }结果:
MyClass()
-------------------------------
MyClass(int i)
-------------------------------
MyClass(const MyClass &c)
-------------------------------
MyClass(int i)
operator =(const MyClass &c)
-------------------------------
operator =(const MyClass &c)
-------------------------------
相关文章推荐
- C++中复制构造函数和隐式转换
- c++防止构造函数隐式转换示例
- c++构造函数隐式转换--转换构造函数
- 【小记备忘】之C/C++ 杂记,catch,调用构造函数,内存分配,隐式转换【2013.12.11】
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- C++拾趣——类构造函数的隐式转换
- C++ 类型自动转换 构造函数 复制构造函数 赋值操作运算符函数
- C++在类之间调用static_cast转换时,需要复制构造函数
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- c++:explicit 抑制构造函数隐式转换
- 【C++基础之十七】抑制由构造函数定义的隐式转换
- C++在类之间调用static_cast转换时,需要复制构造函数
- explicit:C++规定,当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换
- C/C++日常学习总结(第十二篇)将构造函数声明为explicit(显式)的方式可以抑制隐式转换
- C++:动态内存分配和释放、类型转换、面向对象编程、构造函数
- more effective c++——Item M30 代理类(三)隐式类型转换与代理类
- \t\tC++中复制构造函数有关的一点问题
- C++隐式类类型转换
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)