Effective C++读书笔记(1)
2013-12-16 14:57
176 查看
导读
1.定义式是编译器对此对象拨发内存的地点。
2.explicit声明的构造函数可被用于禁止编译器执行非预期的类型转换。
注:对于单个参数的构造函数定义了从该形参类型到该类型的一个隐形转换。explicit只对构造函数起作用,用来抑制隐式转换。
class
A {
A(int a);
};
int Function(A a);
当调用 Function(2) 的时候,2会隐式转换为A类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写:
class A {
explicit A(int a);
};
int Function(A a);
这样,当调用 Function(2) 的时候,编译器会给出错误信息(除非 Function 有个以 int 为参数的重载形式),这就避免了在程序员毫不知情的情况下出现错误。
3.copy构造函数和copy赋值操作符的区别是当有新对象被定义时必会调用copy构造函数,而没有新对象产生时会调用copy赋值操作符。
4.当函数参数为值传递的类型时调用的是该类型的copy构造函数。
1.定义式是编译器对此对象拨发内存的地点。
2.explicit声明的构造函数可被用于禁止编译器执行非预期的类型转换。
注:对于单个参数的构造函数定义了从该形参类型到该类型的一个隐形转换。explicit只对构造函数起作用,用来抑制隐式转换。
class
A {
A(int a);
};
int Function(A a);
当调用 Function(2) 的时候,2会隐式转换为A类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写:
class A {
explicit A(int a);
};
int Function(A a);
这样,当调用 Function(2) 的时候,编译器会给出错误信息(除非 Function 有个以 int 为参数的重载形式),这就避免了在程序员毫不知情的情况下出现错误。
3.copy构造函数和copy赋值操作符的区别是当有新对象被定义时必会调用copy构造函数,而没有新对象产生时会调用copy赋值操作符。
4.当函数参数为值传递的类型时调用的是该类型的copy构造函数。
相关文章推荐
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言
- C++字符转UTF-8字符
- C++编写Config类读取配置文件
- C++界面库大全2013
- C++ Keywords Alternative Operator Names
- c++原型模式(Prototype)
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- c++文件读写
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- C语言堆栈入门——堆和栈的区别
- Xcode编写C/C++程序
- C语言 &运算
- C++ 中string.find() 函数的用法总结
- 小米智能手机的解锁初探--C++
- C/C++ Volatile关键词深度剖析
- 《Effective C++》学习笔记条款13 以对象管理资源
- 【转载】一步步将vim改造成C/C++开发环境(IDE)
- C++拷贝构造函数