s4 和s5 分别把一个int型和char型,隐式转换成了分配若干字节的空字符串,容易令人误解。 为了避免这种错误的发生,我们可以声明显示的转换,使用explicit关键字: class String { explicit String ( int n ); //本意是预先分配n个字节给字符串 // 用C风格的字符串p作为初始化值 //… } 1. 2. 3. 4. 5....
Test(intd):data(d){//explicitcout<<"C:"<< this <<endl; } }intmain(){ Test t =100; } 拷贝构造函数如果加上了explicit,下面的语句就无法编译通过;不加可以。 #include<iostream>using namespacestd;classTest{public: Test(){}//拷贝构造函数explicitTest(constTest &t){cout<<"in copy"<<end...
拷贝构造函数如果加上了explicit,下面的语句就无法编译通过;不加可以。classTest{public://拷贝构造函数explicitTest(constTest &t){ data = t.data; }intgetData(){returndata; }private:intdata; };voidtest(Test x){ }intmain(){Testt2(t1);//调用拷贝构造函数//Test t3 = t2;//编译不过//test(t2)...
Test(int d):data(d)//explicit cout << "C:" << this << endl; int main() Test t = 100; 拷贝构造函数如果加上了explicit,下面的语句就无法编译通过;不加可以。 class Test public: //拷贝构造函数 explicit Test(const Test &t) data = t.data; int getData() return data; private: int da...
void test(Test x){//进入函数的时点会调用拷贝构造函数 int value; value = x.getData(); Test tmp(value); return tmp;//return的时点会调用拷贝构造函数 } Test t5 = test(t1); 分享文章:c/c++拷贝构造函数和关键字explicit详解 本文URL:http://www.cxhlcq.com/article/gdihje.html...