C++ 的一些概念。


抽象:其实就是建立模型的一个过程。你要建立一个类,首先要去想它有哪些变量(这就是数据抽象),要实现哪些功能(这就是行为抽象)。

         对于同一个对象,抽象的结果没有标准,就看写代码的人怎么想了,达到目的的抽象就是好抽象嘛。

封装:这个看来看去,其实就是写代码的过程。。其中涉及到要把哪些函数做接口,哪些是私有函数等等,但是,说来说去还是写代码。

继承:不用说了吧,就是把人家的函数拿来用呗,我是你儿子,所以你的就是我的╮(╯▽╰)╭

多态:(天啊我今天第一次见这个词orz)就是一个函数可以处理多种类型的对象。4个实现办法:强制多态,重载多态,类型参数化多态,包含多态。(看来得好好看看这部分内容了 = =)

:定义一个类大约如下:

class Clock // 类名
{
// 这部分定义的都默认为私有成员
public:
void showTime();
// 外部接口
protected:
// 保护型成员
private:
// 私有成员
}

//另一个文件里
void Clock::showTime(){
}

为了代码整齐一般类中只声明函数原型,函数的实现可以再外部定义,但是需要类名限制。

关于public private 和protect:

public 中定义的是函数的外部接口,就是说在类外面,只能用public中的函数。再清楚点,就是在这俩文件外,定义个实体啊之类的时候,只能用这部分的内容。

private  这部分定义的东西,只能被内部拿来使用,不管是变量还是函数,也就是只能被这两个文件内的东西拿来用。

protect 这个玩意儿跟private属性类似,但是两者继承的时候会出现不同的结果,也跟继承的类型有关,这个在继承的部分再详细讨论吧。

内联成员函数:(又一个新词T T,看来我真的什么都不懂啊~)就是说一个函数用的次数比较多的话,为了减少开销,把它设为内联函数,但是注意,这样会增加编译长度,所以最好只选择很简单的函数作为内联函数。内联函数有俩种方式表示,一种是直接在类文件里把函数体写出来,另一种是在成员函数的cpp文件里写这个函数的时候,在返回值类型前加关键词 inline。两种方式效果相同。

对象(实体):类是个抽象的东西,so,我们使用的时候要定义一个实体,就叫做对象。利用对象可以访问类的公有成员函数,采用“.”做操作符。

构造函数和析构函数:(我几乎忘了这对难兄难弟的名字了。。话说这俩一般会自动生成的吧~)

因为不可以在定义变量的时候初始化(别问为啥,反正别初始化,会有编译错误),因此构造函数需要初始化类的变量,构造函数必须与类名相同,且没有返回类型,通常被声明为共有函数。通常构造函数在对象被创建时会被自动调用。如果类中没有写构造函数,编译器会自动生成一个默认的无参数无内容的构造函数,如果已经声明,就不会自动生成。

注:如果自己定义了构函,并且有参数,那么在定义实体的时候就必须给出参数,否则就会出错。如下~

Clock::Clock(int x, int y){
// 函数内容略
}

//建立实体时 正确:

Clock myclock(0,0);

//错误:

Clock myclock;

拷贝构造函数:就是说当你有一个对象,你需要很多一样的对象,你可以初始化很多次,但是这样麻烦嘛,所以就出个拷贝构函,这很常用的(起码我写的很多filter里都会用到),他就是把一个实体的属性都拷贝到另一个上去。

Clock::Clock(Clock &c){
//拷贝过程就是把参数都复制过去
}

//使用办法:

Clock myclock(0,0);
Clock clock2(myclock);

拷贝构函被调用的情况有好几种,比如一个函数的参数是类的实体时,或者函数返回值是类的实体时,拷贝构函都会被调用,想知道原因的话自己查吧。。我懒得写。

析构函数:就是用来释放这个类用的空间,一般在实体生存期结束的时候被自动调用。跟构造函数一样,没有返回类型,函数名跟类名相同但是前面有个‘~’,如果不写系统也会自动生成一个啥都不错的默认的析构函数。形式就是: ~Clock(){}  (真的是毫无节操啊d(╯﹏╰)b)

posted @ 2012-02-07 19:00  勤劳的饺子  阅读(205)  评论(0编辑  收藏  举报