做家政公司网站,dede模板打网站显示栏logo,影楼免费网站建设,软件开发技术文档范文如果构造函数只接受一个实参#xff0c;则它实际上定义了转换为此类类型的隐式转换机制。将这种构造函数称为转换构造函数。 #ifndef MAIN_H_INCLUDED#define MAIN_H_INCLUDED#includeiostreamusingnamespace std;classClassTest{public:ClassTest(){ cout 则它实际上定义了转换为此类类型的隐式转换机制。将这种构造函数称为转换构造函数。 #ifndef MAIN_H_INCLUDED#define MAIN_H_INCLUDED#includeiostreamusingnamespace std;classClassTest{public:ClassTest(){ cout ClassTest()endl;}ClassTest(int i){ cout ClassTest(int)endl; value i; value2 2;}ClassTest(int i,int j): value(i), value2(j){ cout ClassTest(int, int)endl;}ClassTest(constClassTest test){ cout ClassTest(const ClassTest) endl; value test.value; value2 test.value2;}void getValue(int,int);private:int value 0;int value2 0;};#endif// MAIN_H_INCLUDED #includemain.hvoidClassTest::getValue(intiValue,intiValue2){ iValue value; iValue2 value2;}int main(){ClassTest classTest 2;/** * 还可以使用以下几种实现方法 * ClassTest classTest(2); * ClassTest classTest ClassTest(2); * ClassTest classTest (ClassTest)2; */int value 0;int value2 0; classTest.getValue(value, value2); cout value value \nvalue2 value2 endl;return0;} 只允许一步类类型转换#ifndef MAIN_H_INCLUDED#define MAIN_H_INCLUDED#includeiostreamusingnamespace std;classClassTest{public:ClassTest(){ cout ClassTest()endl;}ClassTest(string str){ strValue str;} string getValue(){return strValue;}private: string strValue;};#endif// MAIN_H_INCLUDED #includemain.hint main(){ClassTest classTest string(Hello world!);//ClassTest classTest Hello world!;/*无法实现从char[]先转化为string在由string转换为类类型*/ cout classTest.getValue() endl;return0;} 抑制构造函数定义的隐式转换#ifndef MAIN_H_INCLUDED#define MAIN_H_INCLUDED#includeiostreamusingnamespace std;classClassTest{public:ClassTest(){ cout ClassTest() endl;}/** * 如果是在类声明之外进行类成员函数的实现explicit只加在声明的位置 */ClassTest(string str){ strValue str;} string getValue(){return strValue;}private: string strValue;};#endif// MAIN_H_INCLUDED #includemain.hint main(){//ClassTest classTest string(Hello world!);/** 错误 */ClassTest classTest(string(hello world));/** 只能用于直接初始化 *///ClassTest classTest Hello world!;/*无法实现从char[]先转化为string在由string转换为类类型*/ cout classTest.getValue() endl;return0;} 来自为知笔记(Wiz) 转载于:https://www.cnblogs.com/fengkang1008/p/4652252.html