??????C++?????к???????????explicit??????????????????????????????????????????C++?????????????????????????úü???C++????????????????????????????е?MFC?????C++??????е????????????explicit?????????????????explicit?????????????????????????????????а?????????????д???????????????????á????C++???????????????????????Щ???????????????????á?
?????????漲????????????????????????????????????????????????
1 //Example.h
2 #pragma once
3 class CExample
4 {
5 public:
6     CExample(void);
7 public:
8     ~CExample(void);
9
10 public:
11     int m_iFirst;
12     int m_iSecond;
13 public:
14     CExample(int iFirst?? int iSecond = 4);
15 };
16 //Example.cpp
17 #include "StdAfx.h"
18 #include "Example.h"
19 CExample::CExample(void)
20 : m_iFirst(0)
21 {
22 }
23 CExample::~CExample(void)
24 {
25 }
26 CExample::CExample(int iFirst?? int iSecond):m_iFirst(iFirst)?? m_iSecond(iSecond)
27 {
28 }
29 //TestExplicitKey.cpp
30 ...//????????
31 #include "Example.h"
32 int _tmain(int argc?? _TCHAR* argv[])
33 {
34     CExample objOne; //??????в??????????
35     CExample objTwo(12?? 12); //?????????????????????
36     CExample objThree(12); //??????????????????????ù?????????????????????
37     CExample objFour = 12; //??????????????????CExample
38     temp(12);
39     objFour(temp);???????????????
40 //??????????????????????????
41 return 0;
42 }
???????????????????м???????explicit????explicit CExample(int iFirst?? int iSecond = 4);
???????CExample objFour = 12; ??????佫?????????????vs05?μ??????????????
????error C2440: 'initializing' : cannot convert from 'int' to 'CExample'
????Constructor for class 'CExample' is declared 'explicit'
?????????Щ?????????????????????????????У??????????????′??????????????????????????????????????????????в?????????????????????????????????????????????????????????????????????????????explicit?????????????????????????????????explicit????????????????á?