浏览 1610 次
锁定老帖子 主题:面向对象编程
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-23
//倒计时 #include <iostream> #include <ctime> using namespace std; class Clock{ int h; int m; int s; public : void set( int h, int m , int s ); void tick(); void show(); void run(); }; void Clock::set(int ho, int mo, int se ) { h = ho; m = mo; s = se; } void Clock::tick() { time_t t = time(NULL); while(time(NULL)==t); if(-- s<0){ s = 59; if(--m < 0 ){ m = 59; if(--h < 0) h = 23; } } } void Clock::show() { cout << '\r'; if(h<10) cout << 0; cout << h << ':'; if(m<10) cout << 0; cout << m << ':'; if(s<10) cout << 0; cout << s << flush; } void Clock::run() { while(h!=0||m!=0||s!=0){ tick(); show(); } cout << "time out!" << endl; } int main() { Clock c; c.set(0,1,5); c.run(); } 面向对象编程 * 定义和实现类 * 创建对象 * 使用对象 跟类同名的函数叫构造函数,无返回类型,因为它是自动调用的 结构和类最大的区别是:结构里的成员默认是完全公开的,谁都能访问,而类不行. 结构还可以通过{}来初始化,而类却不行,只能通过构造函数来初始化. class A{ int n; const double d; public: A():n(0),d(0.0)/*初始化列表*/{ cout << "Call A()" << ednl; } A(int n):n(n),d(120.0){ cout << "Call A(int)" << endl; } } int mian() { A al; A a2(100); A a3();//像一个函数申明,不会分配空间,不能这样写 } 类的初抬化(与赋值不同):初始化列表,:成员变量名(初始化值),多项用豆号隔开. 常量可以初始化,但是不能赋值. 注意:初始化列表不能用来初始化数组和结构变量. 形参可以有默认值.//这一特性可以简化程序 构造函数比较适合做一些准备性的工作. ---------------------------- * 析构函数 : ~类名,也叫解构函数,解构器,析构器 它是用来做收尾工作的,被自动调用. 析构函数总是没有形参.它也不能重载. 析构函数应该是公开的. 全局变量会在所有其它变量之前创建,之后释放. 从来没必要去调用析构函数. 析构的顺序与构造的顺序恰恰相反. pase error at the end of unput //表示少了大括号 全局变量在main方法前面就已经形成了. 全局对象的构造函数在main前调用. 当不写构造函数时,系统会自动生一个无参的构造函数,如果 自已写构造函数了,系统将不再提供构造函数. ---------------------------------- 对象指针:this,A* p 对象指针与结构指针一样,此处不再赘述. 对象也可以有别名 A a; A& b = a;//此时a,b将是一样 * 面向对象理论 用类做封装工作 自然界中的任何一个实体都看成一个对象. 分析并分解出某个问题中的种种对象,也就是找名词. 准确的描述所有对象之间的种种关系. 找到它们之间的相互关系. 用类来定义程序结构. 对所有对象进行抽象总结 1, 名称 2, 属性 3, 行为 程序 = 数据 + 算法 算法 = 函数 + 控制流程 c++中的封装是由类来完成的. * 封装 * 继承 * 多态 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |