类相关的技术细节 -15
2017-11-06 14:44
288 查看
参数类型
定义枚举型变量:
需要注意的是,在使用时,以
Month::mar
来进行使用而不是
Month.mar
因为Month不是一个对象,而是一个类型。mar也不是一个数据成员,而是一个枚举量,一个符号常量。
因此,在类名、枚举命或者名字空间名后用 ::,在对象名后面用使用 .
默认构造函数
定义一个构造函数,不需要显式提供初始化代码,就能创建对象。这种构造函数不接受参数。
例子:
为了避免使用全局变量带来的初始化问题:
在这里使用static,这样变量dd就不会每次调用default_date()时都被创建,只是在第一次调用时被创建并被初始化。当有了这个函数以后,再为Date创建一个默认构造函数就比较简单了:
const成员函数
当我们创建函数时,如果不希望去修改它,则可以在定义的时候在右边协商const
定义枚举型变量:
enum class Month{ jan = 1, feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec };
需要注意的是,在使用时,以
Month::mar
来进行使用而不是
Month.mar
因为Month不是一个对象,而是一个类型。mar也不是一个数据成员,而是一个枚举量,一个符号常量。
因此,在类名、枚举命或者名字空间名后用 ::,在对象名后面用使用 .
默认构造函数
定义一个构造函数,不需要显式提供初始化代码,就能创建对象。这种构造函数不接受参数。
例子:
class Date{ public: //... Date();//默认构造函数 //... private: int y; Month m; int d; }; Date::Date() :y{2001},m{Month::jan},d{1} {}
为了避免使用全局变量带来的初始化问题:
const Date& default_date()//定义一个返回值类型为Date类型的函数(引用) { static Date dd{2001,Month::jan,1}; return dd; }
在这里使用static,这样变量dd就不会每次调用default_date()时都被创建,只是在第一次调用时被创建并被初始化。当有了这个函数以后,再为Date创建一个默认构造函数就比较简单了:
Date::Date() :y{default_date().year()}, m{default_date().month()}, d{default_date().day()} {}
const成员函数
class Date{ public: 4000 int day() const; Month month() const; int year() const; void add_day(int n); void add_month(int n); void add_year(int n); private: int y; Month m; int d; }; Date d {2000, Month::jan, 20}; const Date cd{2001,Month::feb, 21}; cout<<d.day()<<cd.day()<<'\n'; d.add_day(1);//正确 cd.add_day(1);//错误,cd为常量
当我们创建函数时,如果不希望去修改它,则可以在定义的时候在右边协商const
int Date::day() const { ++d;//错误:试图从常量成员中改变对象 return d; }
相关文章推荐
- 自己做的几个小软件(数学工具和游戏),用C/C#制作,用到许多相关的C#技术细节,可以免费提供下载,感兴趣的,来看一下
- Date日期程序--感受类相关的技术细节 笔记整理
- [nRF51822] 15、穿戴式设备上电量检测装置的设计及细节技术点(偏专业硬件文章)
- 类相关的技术细节 -13
- 类相关的技术细节 -14
- unity c#调用c++ dll相关技术细节整理
- Java基础技术细节总结
- 【v2.x OGE教程 15】布局相关
- 【科普】#001 大数据相关技术技术
- 详解Objective-C的meta-class 分类: ios相关 ios技术 2015-03-07 15:41 51人阅读 评论(0) 收藏
- 断点 相关技术与原理(2)
- Hadoop技术细节遗珠
- 前端相关的技术术语全称
- 关于远程唤醒技术的相关资料
- cocos2dx 多点触控onTouches侦听细节(15/11/10)
- 本周ASP.NET英文技术文章推荐[07/15 - 07/21]
- 黑马程序员 - 技术 blog15 之 反射 by 八戒
- 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
- 大数据认知阶段——如何学习大数据相关技术
- 领导同志发言万能模板 这个跟技术不相关 放在这里保存下