zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    react脚手架搭建及配置
    mac使用技巧
    nginx配置
    vue常见前端UI库
    自定义指令
    代码缩进修改
    webpack学习入门
    webpack使用extract-text-webpack-plugin打包时提示错误
    webpack未成功全局安装
    基于jQuery的AJAX实现三级联动菜单
  • 原文地址:https://www.cnblogs.com/jiaozihardworking/p/2341282.html
Copyright © 2011-2022 走看看