即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Effective c++ 学习与进阶学习与进阶笔记 (一)

编程语言 liyazhen2011 32℃ 0评论
本文目录
[隐藏]

1.1.初始化

自定义对象的初始化由构造函数执行,其中默认构造函数没有参数或者每个参数都有缺省值。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;        //调用赋值运算符
}





转载请注明:CodingBlog » Effective c++ 学习与进阶学习与进阶笔记 (一)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情