您的位置:首页 > 编程语言 > C语言/C++

C++中复制构造函数和隐式转换

2013-09-22 09:54 399 查看
隐式转换可能发生在对象的初始化中(包括由赋值间接产生的初始化),不可能由赋值直接产生

01
#include <iostream>
02
03
using
namespace
std;
04
05
class
MyClass
06
{
07
public
:
08
MyClass();
09
MyClass(
int
i);
10
MyClass(
const
MyClass &c);
11
~MyClass();
12
MyClass & operator = (
const
MyClass &c);
13
14
private
:
15
int
m_i;
16
};
17
18
MyClass::MyClass()
19
{
20
m_i = 0;
21
cout <<
"MyClass()"
<< endl;
22
}
23
24
MyClass::MyClass(
int
i)
25
{
26
m_i = i;
27
cout <<
"MyClass(int i)"
<< endl;
28
}
29
30
MyClass::MyClass(
const
MyClass &c)
31
{
32
m_i = c.m_i;
33
cout <<
"MyClass(const MyClass &c)"
<< endl;
34
}
35
36
MyClass::~MyClass()
37
{
38
39
}
40
41
MyClass & MyClass::operator =(
const
MyClass &c)
42
{
43
m_i = c.m_i;
44
cout <<
"operator =(const MyClass &c)"
<< endl;
45
return
*
this
;
46
}
47
48
int
main()
49
{
50
MyClass c1; 
// MyClass()
51
cout <<
"-------------------------------"
<< endl;
52
MyClass c2 = 2;
// MyClass(int i) 隐式转换
53
cout <<
"-------------------------------"
<< endl;
54
MyClass c3 = c2;
// MyClass(const MyClass &c) 隐式转换
55
cout <<
"-------------------------------"
<< endl;
56
c1 = 2; 
// MyClass(int i) 隐式转换
57
// operator =(const MyClass &c) 无隐式转换
58
cout <<
"-------------------------------"
<< endl;
59
c3 = c2;
// operator =(const MyClass &c) 无隐式转换
60
cout <<
"-------------------------------"
<< endl;
61
return
0;
62
}
结果:

MyClass()

-------------------------------

MyClass(int i)

-------------------------------

MyClass(const MyClass &c)

-------------------------------

MyClass(int i)

operator =(const MyClass &c)

-------------------------------

operator =(const MyClass &c)

-------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: