C++-------------类和对象

1、 结构化程序设计

             程序 = 算法 + 数据结构

             算法第一,数据结构第二

2、面向对象程序设计OPP

             程序 = 对象 + 对象 +...

             关键:让每一个对象负责执行一组相关任务

3、面向对象编程开发范式的特性

             万物皆对象

             程序是一组对象彼此之间在发送消息 ( 对象之间的交互构成了程序的逻辑 )

             每个对象都有自己的内存占用,可以组装成更大对象

             每个对象都有类型,特定类型的所有对象可以接收相同的信息

4、类的概念

         类 是创建对象的模板蓝图 , 是一组类似对象的共同抽象定义

 

5、对象的概念

          对象是类的实例化结果 , 对象是实实在在的存在,代表现实世界的某一事物。          (比如 类是车 , 对象是楼下的奥迪车)

6、对象的三大关键特性

              行为:对象能干什么     (比如  能载人)

              状态:对象的的属性,行为的结果  ( 比如   车的价格 车的车速)

              标识:对象的唯一身份 (比如 车的车牌号)

7、类和对象的区别

            类是静态定义 ,  对象是动态实例 , 程序代码操作的是对象而非类, 建模得到的是类而非对象

      类和对象的联系

            类是对象的定义 , 对象的产生离不开类这个模板 , 类存在的目的是实例化得到对象

8、 从 对象 抽象出 类

            将对象和对象的共同点 抽象出来,可以构成一个类。

9、定义一个类的步骤

<1>定义类名

<2>编写类的数据成员代表属性

<3>编写类的方法代表行为

10、类的建模是一个抽象和封装的过程。

             抽象:去掉不关注的、次要的信息而保留重要的信息

             封装:信息打包

                       <1>具体一点就是:将数据和行为结合在一个包中,对对象的使用者隐藏数据的实现方式

                       <2>实现封装的关键:不能让类中的方法直接访问其他类的内部数据,只能通过公开行为方式间接访问(比如你不能直接查询别人的银行卡里的余额,但是能通过直接问的方式获知该数据)

11、在C++中类和结构体的区别

在C++中只有两点区别:   (主要体现在安全性上)
  (1)class中默认的成员访问权限是private的,而struct中则是public的。   
  (2)从class继承默认是private继承,而从struct继承默认是public继承。   
  除此这外无任何区别。   

            

             结构体能做到,类都能做。

12、在类中定义成员函数并声明 ----在.h文件中  //////当然也可以自在类中定义函数,然后在源文件内声明函数

        在C++中,类定义通常在头文件中,因此这些成员函数定义也伴随着

# include<iostream>
using namespace std;
class Nian 
{
public:
    void set(int y,int m,int d)
    {
       year = y;
       month = m;
       day = d;
    }
    
    bool IsRun()
    {
        if((year%4==0 && year%100!=0)||year%400==0 )
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    void print()
    {
        cout<<year<<"/"<<month<<"/"<<day<<endl;
    }
private:
    int year,month,day;
};
# include<iostream>
# include<stdlib.h>
# include"year.h"  //要用双引号
using namespace std;
int main()
{
    Nian a;    //利用类 创建对象 a  //注意:a.day =1 是错误的 因为在main方法中,不可以访问pravite权限的值
    a.set(2004,5,4);
    bool k = a.IsRun();
    cout<<k<<endl;
    a.print();
    system("pause");
    return 0;
}

13、在类之后定义 成员函数

<1>C++允许在其它位置定义成员函数

<2>将类定义和其成员定义分开,是目前开发程序的通常做法

<3>我们把类定义(头文件)看成是类的外部接口,类的成员函数定义看成是类的内部实现

14、重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法

<1>类的成员函数可以像普通函数一样重载

<2>但不同类即使有相同的函数名也不算重载

15、类的成员函数可以像普通函数一样设置默认值

# include<iostream>
using namespace std;
class Nian 
{
public:
    void set(int y=2001,int m=1,int d=1)
    {
       year = y;
       month = m;
       day = d;
    }
    
   
    }
private:
    int year,month,day;
};

16、调用成员函数必须指定对象和成员名

month = 10;  这是错误的,没有指定对象而且还可能不是成员名 是变量

Nian::month = 10;  这是错误的,没有指定对象

Nian::set(2004,1,5); 这是错误的,没有指定对象

17、this指针代表当前对象占用内存空间的地址

  

void set(int y,int m,int d)
{
        this->year = y;
        this->month = m;
        this->day = d;
}
原文地址:https://www.cnblogs.com/wshyj/p/6341271.html