zoukankan      html  css  js  c++  java
  • 面向对象2017课程复习

      研究生选修课程,根据老师画的重点总结一下,希望能够温故而知新。

    重点内容:

    PPT内容提取总结

    1,c++程序一般生成过程:  编辑(.cpp,.c,.hpp,.h文件)-----编译(生成obj文件)---链接(将obj链接生成可执行exe文件)---执行调试

    2,c++程序结构:注释,输入输出,函数,变量(对象),符号常量,表达式,语句

    3,类型定义关键字typydef ----用来为复杂的声明定义简单的别名:例:typederf int size;就可以使用size代替int使用

    4,string是抽象数据类型(个人mark!)

    5,向量vector是一个模板类,重点理解!

       vector中所有对象的类型都相同

      每个对象都有一个索引  

      vector<int> iv ; vector<float>fv;//括号里是模板参数

      初始化:   vector<T> v2(v1);//拷贝构造

           vector<T> v2 = v1;//赋值初始化

           vector<T> v(n, value);//n个重复值构造    vector<int> chess(10,1);

           vector<T> v{a,b,c,d....};//列举具体构造值  

           vector<T>v  = {a,b,c....};

      主要操作函数:

            empty();//判断是否为空

            push_back();//向集合中添加元素

            size();//返回s的字符个数

            V[n]// 向量中,第n个对象,下标从零开始

      迭代器运算:  读写迭代器(iterator) 只读迭代器(const_iterator)

      跟指针类似,直接看下面使用实例

    6,运算符优先级及短路求值策略

       例如 expr1 &&expr2   如果第一个表达式为假,则第二个表达式可能未执行,注意是否会影响运算结果

    7.成员访问运算符,对象用点(.)指针用箭头(->)

    8,数据类型强制转换(显示、隐式) 

      在数据进行运算之前,较低的数据类型,向较高的数据类型进行转换。

     ****自动转换类型:运算式中存在float类型时,无条件转换为double型,即4字节浮点数转化为8字节浮点数。                                                                                                    

    精度丢失问题,int i; float f = 3.5 ; i = f;

    9,枚举类型enum  

      9.1 其中 无类型名变量的定义只能进行一次,不可重新定义

      9.2 可用于计算,使用强制类型转换,例:

      enum weekday {sun,mon,tue,wed,fri,sat}num1.num2;

      num1=(enum weekday)(sun+2);   //num1的结果为tue,(sum+2)被强制转换

      num2 =(enum weekday)7 ;     //合法,将整数7强制转换为枚举类型后赋值。然而weekday中sun对应的值为0,以此类推,所以num2=?  答案是7,虽然语法没有错误但是由于在enum表里找不到对应值,所以为原值

    10,const关键字(非重点,仅做理解)

      const关键字用来修饰常量,用来修饰一定不会改变的数据。

      const还可以修饰函数的形参,防止由于意外而改动指针。这里要提一下形参的引用传递值传递 ,值传递优点是不会改变原始数据,但是会需要额外的内存空间存储其备份。这里可以使用引用传递,即传递指针,

    然后使用const修饰指针。这样既不会需要额外空间(对于占用大的对象重要),又可以保证,函数内部不会修改原始数据,保证了数据安全。

      const修饰函数的返回值,那么函数的返回值需要用const修饰的变量接受,不能被修改。

    如果这里讲的不清楚的话可以参考该链接:http://blog.csdn.net/zcf1002797280/article/details/7816977

    11,window程序启动过程

             

    12,串行化:将对象保存到磁盘上或从磁盘上恢复的过程

    13,inline关键字,可以提高函数执行的效率,是以代码复制为代价。

     14,运算符重载:主要记住定义方式,注意阅读代码题中,各种符号的重定义,可能影响输出结果

    类的成员函数定义:

    类的友元函数定义:

    友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。上述函数非complex的成员函数,所以输入形参为两个对象引用。

     15,虚函数与动态绑定,纯虚函数与抽象类

      简单来说,动态绑定指的就是继承后,对父类中函数重载的方式,因为c++中,子类是不能随便重写父类的函数,除非使用virtual修饰的

      纯虚函数表示一个声明,含有纯虚函数的类就是抽象类,不能实例化。他们存在的意义是规定了一种规范,其子类要照着这种规范定义,使用函数。

    注意!!! 关于子类实例化的对象,强制转换为父类对象,则会调用父类函数(重写无效)。然而将子类对象指针强行转换为父类指针,则可以指向子类函数(动态绑定)题目参考扫描版第五页

      我押这道题一定会考

    往届题目习题内容知识点:

     1,对话框有两种形式:模态,非模态

      模态:指获得焦点之后,除非关闭,焦点或者输入光标一直停留在该对话框。

      非模态:不会强制焦点,可以在不同的窗口间来回切换

      对话框的创建过程

    2,线程可以分为:用户界面线程,工作者线程 

    3,重载是指同一个函数名,但是 参数个数,参数类型 不同的一类函数

    4,在类继承时,可以使用多个类作为基类。

      在c++上是正确的,因为其可以多继承。然而如java这种面向对象语言并不支持多继承,而是通过接口实现多继承。

    5,程序编译时产生错误是因为程序中的语法错误。(错)

      还可能存在变量重复定义,上下文关系错误

    6,列举单文档程序的主要框架类:CApp类,Cdoc类,Cview类,CmainFrame类

    7,c++程序的编译链接过程中,对函数的调用处理分为:静态绑定,动态绑定

    8,MFC中,视图类是窗口类的派生类

      MFC中三种常用的GDI对象:CPen,CBrush,CBitmap

    9,面向对象三个特点:继承,多态,封装(以后面试也会被问的,理解的越深刻越好),各自定义,举例用代码说明等

    10,线程同步的方法:原子访问,互锁函数,关键代码

    11,使用设备上下文对象的两种方法??selectStockObject(),selectObject()

    12,winmain函数的主要功能?

    答:注册窗口类,创建主窗口,显示主窗口,进入消息循环,遇到WM_CLOSE消息退出

    13,对话框的创建过程?

        1,添加对话框资源,

        2,为新加入的对话框资源添加类

        3,声明对话框类的对象,并添加该类的头文件

        4,调用该类的DoModel函数来激活模式对话框,或者先调用Create函数,然后调用ShowWindow函数来激活非模态对话框

     14,坐标映射方式:设备坐标,逻辑坐标,映射方式

     --------------------------------------------------------------------

    老师不按套路出牌,开放题不要浪费太多时间,读程序写结果的题都是恶心的加减法计算,没时间可以后写。

    最后面的编程设计大题,和选择大题基本就是送分题,mvc考察内容很少,选重点复习就行。

       

       

    本博客所有内容为原创,转载需征求作者同意。
  • 相关阅读:
    利用Express模拟web安全之---xss的攻与防
    JavaScript之引用类型
    JavaScript之变量、作用域和内存问题
    linux学习之缓存机制
    linux学习之vimrc配置推荐
    linux系统之free命令详解
    JavaScript之函数
    JavaScript之语句
    JavaScript之字符串、对象及操作符
    Navicat for MySQL 之数据库迁移
  • 原文地址:https://www.cnblogs.com/xueyudlut/p/8043088.html
Copyright © 2011-2022 走看看