zoukankan      html  css  js  c++  java
  • 20170519

    一、面向对象编程
        1.1
        老师.问问题(学生) {
            学生回答问题;
        }
        程序就是一组对象相互的发消息
        一个对象都是有自己或者有其它对象构成的
        每一个对象都有一个类型
        相同类型的对象都能接收相同的消息(函数)
        1.2 现实世界和虚拟世界
        现实世界 --> 抽取这个类别的核心特征 --> 这个类型对象的功能 --> 计算机世界
        学生 --> name, age, school --> 学习(), 吃饭() --> 计算机世界
        特征在计算机中,功能在代码区中
        
        计算机世界用类型和类型中的特征,创建对象
        编译器负责把对象和行为联系起来
        计算机中也有具体和抽象,抽象的是类型,具体的是对象
        
    二、划分一个类别把现实中的对象描述清楚,只要把握这组对象的行为和特征

    三、使用class描述一个类型的行为和特征
        struct -----> class
        class 所有的数据默认变为私有 private
        struct 所有的数据默认变为公有 public
      1 #include <iostream>
      2 #include <ctime>
      3 #include <cstdio>
      4 using namespace std;
      5 class MyTime {
      6     public:
      7     /*特征*/
      8     int hour;
      9     int min;
     10     int sec;
     11     /*行为*/
     12     void showMyTime() {
     13         printf("%02d:%02d:%02d ", hour, min, sec);
     14         fflush(stdout);
     15     }
     16     void setMyTime(int h = 0, int m = 0, int s = 0) {
     17         hour = h;
     18         min = m;
     19         sec = s;
     20     }
     21     /*时间走一秒*/
     22     void dida() {
     23         sec++;
     24         if(60 == sec) {
     25             sec = 0;
     26             min++;
     27             if(60 == min) {
     28                 min = 0;
     29                 hour++;
     30             }
     31         }
     32     }
     33     void run() {
     34         while(1) {
     35             //sleep(1);
     36             time_t t = time(NULL);
     37             while(t == time(NULL));
     38             dida();
     39             showMyTime();
     40         }
     41     }
     42 };
     43
     44 int main() {
     45     MyTime mytime;
     46     mytime.setMyTime(11,59,58);
     47     mytime.showMyTime();
     48     mytime.dida();
     49     mytime.dida();
     50     mytime.showMyTime();
     51     mytime.run();
     52 }
     
     protected    保护权限     在类内和子类中可以访问
     四、如何初始化对象
         MyTime mytime;
         4.1 构造函数
            这个函数和类型名同名
            没有返回类型
            能保证在构建一个对象时自动调用一次
            目的:初始化对象
            如果一个类没有定义任何构造函数,则编译器自动分配一个无参的构造函数
            如果提供了一个构造函数,则编译器会自动覆盖掉默认的
         4.2 一个对象的创建过程
            1. 编译器根据类型大小分配内存
            2. 普通的成员变量不做任何操作,但如果成员变量是自定义类型就构建它
            3. 调用构造函数
         4.3 初始化参数列表
            在构造函数调用之前执行
            const类型的成员或者引用类型成员需要在构造函数之前去初始化
            
            构造函数参数列表之后 实现体之前 要以冒号开头
              1 #include <iostream>
              2 using namespace std;
              3 class A {
              4     const int a;
              5     int &b;
              6     public:
              7     A(int pa, int pb):a(pa), b(pb) {
              8         //a = pa;
              9         //b = pb;
             10     }
             11     void show() {
             12         cout << a << " " << b << endl;
             13     }
             14 };
             15
             16 int main() {
             17     A a(1, 2);
             18     a.show();
             19 }

      4.4 头文件和实现文件分离
             1. 编写头文件
                 定义类型, 声明全局变量, 函数声明
                 防止头文件的重复包含
             2. 编译头文件
             3. 编写实现文件
                 函数和全局变量在一个专门的文件中实现
                 类型实现 自己的实现文件
                    包含头文件
                    去掉函数的参数默认值
                    在每个函数名前加上类名::
             4. 编译实现文件
             5. 测试实现文件

  • 相关阅读:
    GDUFE ACM-1087
    背包九讲
    OJ4TH|Inverse number:Reborn
    OJ4TH|Let's play a game
    GG第四次作业
    OpenCV(3)其他常用数据类型
    OpenCV学习(2)读取视频和摄像头
    OpenCV(1)读写图像
    GG第三次作业
    GG第二次作业
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6878077.html
Copyright © 2011-2022 走看看