C++编程调试秘笈----读书笔记(1)
2013-01-04 06:34
267 查看
一、编译时的错误捕捉
经典的隐式类型转换问题:
这里的问题出来了,可以让一个Apple对象直接赋值给Orage对象,这是不正确的。为了防止这类隐式转换的问题,加上修饰符即可
这样在运行的时候,编译器就会提示错误。
那么如果真要使用=:
关于枚举的:
但是现在接受的却不是我们想要的类型,所以不建议使用枚举创建整型常量,而是用他们创建新类型:
经典的隐式类型转换问题:
#include "stdafx.h" class Apple { }; class Banana { }; class Orage { public: Orage(const Apple& apple); // Orage(const Apple& apple, const Banana *pBanana = 0); }; Orage::Orage(const Apple& apple){} Orage::Orage(const Apple& apple, const Banana *pBanana){} int _tmain(int argc, _TCHAR* argv[]) { Apple RedApple; Banana GreenBanana; Orage BlueOrage(RedApple); // Orage BlueOrage(RedApple, &GreenBanana); Orage BlueOrage = RedApple; return 0; }
这里的问题出来了,可以让一个Apple对象直接赋值给Orage对象,这是不正确的。为了防止这类隐式转换的问题,加上修饰符即可
#include "stdafx.h" class Apple { }; class Orage { public: explicit Orage(const Apple& apple); }; Orage::Orage(const Apple& apple){} int _tmain(int argc, _TCHAR* argv[]) { Apple RedApple; Orage BlueOrage(RedApple); Orage BlueOrage = RedApple; return 0; }
这样在运行的时候,编译器就会提示错误。
那么如果真要使用=:
#include "stdafx.h" class Apple { public: operator Orage() const { Apple mine; Orage toConvertOrage(mine); return toConvertOrage; }; }; class Orage { public: explicit Orage(const Apple& apple); }; Orage::Orage(const Apple& apple){} int _tmain(int argc, _TCHAR* argv[]) { Apple RedApple; Orage BlueOrage(RedApple); Orage BlueOrage = RedApple; return 0; }
关于枚举的:
#include "stdafx.h" enum { SUM, MON, TUE, WED, THU, FRI, SAT }; enum { JAN = 1, FEB, MAR, APR, MAY, JUN }; void IOnlyAcceptWeekType(int WeekType) { } int _tmain(int argc, _TCHAR* argv[]) { IOnlyAcceptWeekType(SUM); IOnlyAcceptWeekType(JAN); return 0; }
但是现在接受的却不是我们想要的类型,所以不建议使用枚举创建整型常量,而是用他们创建新类型:
#include "stdafx.h" typedef enum { SUM, MON, TUE, WED, THU, FRI, SAT } WeekType; typedef enum { JAN = 1, FEB, MAR, APR, MAY, JUN } MonthType; void IOnlyAcceptWeekType(WeekType weekType) { } int _tmain(int argc, _TCHAR* argv[]) { IOnlyAcceptWeekType(SUM); IOnlyAcceptWeekType(JAN); // error return 0; }
相关文章推荐
- C++编程调试秘笈----读书笔记(2)
- C++编程调试秘笈----读书笔记(3)
- C++编程调试秘笈----读书笔记(5)
- C++编程调试秘笈----读书笔记(4)
- C++编程调试秘笈----读书笔记(6)
- [C # 读书笔记]interface 接口 abstract
- WinSock网络编程经络----读书笔记(2)
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
- python 读书笔记(2)算法的渐进分析
- 重构 改善既有代码的设计读书笔记之一 重构原则
- 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(7)
- 《程序员的职业素养》读书笔记
- 《程序员的思维修炼 –开发认知潜能的九堂课》读书笔记
- 《重构:改善代码的既有设计》读书笔记
- 《HeadFirst设计模式》读书笔记-第7章-适配器模式
- 《高性能网站建设指南-前端工程师技能精髓》-读书笔记4(将样式表放在顶部)
- 《Effective C++ 3rd Edition》读书笔记(Introduction & Chapter 1)
- 《Dive into Python》读书笔记之对象和面向对象
- 《暗时间》读书笔记(三)
- 微服务集成——《微服务设计》读书笔记