找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1289|回复: 0

I.B.M.的C++课程大纲。。

[复制链接]

739

主题

468

回帖

4307

牛毛

论坛管理员

狼群

积分
4347
发表于 2008-3-26 13:50:12 | 显示全部楼层 |阅读模式
C++课程纲要:

模块一 结构化程序设计 --C语言


模块二 面向对象的程序设计 -- OO

封装 -- 类
  概念:
   类 -- 具有相同属性和行为的一类事物进行抽象得到一个定义
     只是一个概念
     抽象的
     永远存在

   对象-- 类的一个个体
    客观存在的
    具体的
    生命周期是有限的

  封装:
  成员变量 -- 属性
  成员函数 -- 行为

  构造函数 -- 在对象被构造出来后,进行初始化
      名字与类名相同
      没有返回值
      一个类可以有多个构造函数

  析构函数 -- 在对象被销毁之前,进行内存清理工作
      名字与类名相同
      没有返回值
      一个类只有一个析构函数

  访问控制属性:
    public protected private

  const -- 常量
    成员初始化列表


  static -- 静态
   静态成员:
    静态变量:
     赋初值应在类外部,主函数开始之前
    静态函数:
     在静态函数内部不能使用非静态成员变量和函数

   注意:
    属于类本身的,不属于对象
    在全局范围内只有一个副本
    被所有该类的对象所共享


   非静态成员:
    属于对象
    不同的对象拥有一个不同的副本

   理解:
   静态属于类,非静态属于对象
   当类一旦被定义之后,静态成员已经就存在,并且
   可以在没有任何一个对象的情况下直接通过类名去引用

   非静态成员属于对象,只有在对象被构造之后,
   通过对象去引用

   非静态成员只能通过对象去引用
   静态成员既可以通过类名也可以通过对象去引用

  this:
   系统隐含的指针
   总是指向当前时刻调用函数的对象

   注意事项:
    静态函数内部有this指针吗?
    没有

  new delete :
   new -- malloc
   delete -- free

   区别:
   new delete 不是函数 是运算符
   malloc free 是函数

   注意:
   有new 就必须有delete
   否则,内存泄漏


  嵌套类:
   类中类

   使用:
    (1) 在类的内部直接使用
    (2) 在类的外部使用(public)


  内联函数: inline

  非内联函数:
   类定义:
    .h 文件 -- 类声明部分
    .cpp 文件-- 类定义部分

  友元:
   友元函数:
    全局函数
    另外一个类成员函数
   友元类:

   注意:
   友元不可使用,破坏程序的模块化

继承:
  1. 什么叫继承?
  下一代无偿拥有上一代遗留下来的物质
  2. 如何实现继承?

  继承方式:
   public
   protected
   private

  3. 在实际的开发中如何使用继承?
  目的:代码复用

  4. 继承的注意事项:

  (1) 继承之后构造和析构的顺序

   构造:先基类后子类
   析构:先子类后基类

  (2) 覆盖问题(屏蔽问题)


  (3) 多继承:一个类从两个或两个以上的类进行派生

   问题:钻石环 -- 成员重复
   解决:虚继承

多态:
  重载:
  函数重载:
   1. 什么叫函数重载?
    函数名称相同
    参数不同(类型或个数)
    同一个作用域内:
    都是全局函数
    或
    都在同一个类中

    返回值不能作为判断依据

    能不能参数相同,但是只有返回值不相同?

   2. 如何实现函数重载?

   3. 构造函数重载
    一个类需要有多种构造和初始化对象的方式
    一个类需要多种构造函数:
    (1)默认构造函数(缺省)
    (2)带参构造函数
    (3) 拷贝构造函数(复制构造函数):
     1.student st2(st1);
     2.student st3 = st2;
     3.对象传参
     4.返回对象
   4.引用:
    本质:是一个类型安全的指针
       被包裹的一个地址
    逻辑:是一个已有对象的别名

  运算符重载:

   1. 什么是运算符重载?

    一种运算符当其遇见不同的操作数运算符法则不同
    一个运算符多重含义

   2. 如何实现运算符重载?

    运算符分类:
     一元 ++ --
     二元 + - * /
    重载方式:
     成员函数重载
     全局函数重载

   3.运算符重载应用:

    = 赋值运算符
    拷贝构造函数

    如果一个类包含了指针作为成员变量,那么必须提供如下函数:

    默认构造函数
    带参构造函数
    拷贝构造函数
    析构函数
    重载=运算符


  虚拟:
  1. 什么是虚拟?

   当使用一个指针去调用一个函数时,
   不是根据指针本身的类型去决定调用哪个函数,
   而是根据指针在运行时刻所指向的对象的类型去决定调用哪个函数

   RTTI -- RunTime Type Identify 运行时刻类型鉴别

  2. 如何实现虚拟性?

   1. 定义基类,并声明一个虚函数
   2. 派生出子类,并改写该虚函数
   3. 基类的指针(引用)去指向子类的对象,
     用指针调用该虚函数,虚拟性就产生了

  3. 虚拟性在实际中的应用
   用统一的接口去做不同的事情

  4. 注意问题

   1. 虚拟性与覆盖区别
   2. 纯虚函数的问题
   纯虚函数
   抽象类 -- 包含纯虚函数的类
     不能构造对象

   3. 虚拟多层次调用的问题


模块三 泛型程序设计 -- GP(2)

泛型思想:
  空泛的类型
  不管对象的具体的类型是什么,可以用统一模式来存储和操作

模板:template

函数模板

类模板

STL: 标准模板库

容器:
  顺序容器:
   vector (数组)

   list(链表)
   deque(双向队列)
   stack(栈)

  关联容器:
   set
   map

   multiset
   multimap

迭代器 iterator

算法 algorithm
  find
  sort

高级概念:
流:

IO流:
   ios

istream(cin) ostream(cout)

ifstream    ofstream


文件流:
  ifstream -- 输入文件流
  ofstream -- 输出文件流
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-27 07:07 , Processed in 0.120290 second(s), 23 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表