c++ 构造函数

xiaoxiao2021-02-28  93

    自定义对象的初始化由构造函数执行,其中默认构造函数没有参数或者每个参数都有缺省值。explicit关键字禁止非预期的类型转换。

class B{ public: explicit B(int x = 0){ } }; void doSomething(B obj){ cout << "function do something!" << endl; } int main(){ doSomething(28); //执行了隐式转换失败 }

  运行结果:

error C2664: “doSomething”: 不能将参数从“int”转换为“B“

    “copy构造”和“赋值运算符”的区别:

    1)定义对象调用构造函数,如:B obj3 = obj是调用copy构造函数;

    2)如果没有对象的定义,调用赋值操作。

class B{ public: B(); //default构造函数 B(const B &rhs); //copy构造函数 B& operator = (const B &rhs); //赋值运算符 }; int main(){ B obj; //调用default构造函数 B obj2(obj); //调用copy构造函数 B obj3 = obj; //调用copy构造函数 obj2 = obj3; //调用赋值运算符 }

 

转载请注明原文地址: https://www.6miu.com/read-31054.html

最新回复(0)