论坛首页 编程语言技术论坛

面向对象编程

浏览 1610 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
作者 正文
   发表时间:2009-05-23  
C++
//倒计时
#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++中的封装是由类来完成的.

* 封装
* 继承
* 多态
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics