(C++程序设计笔记)类和对象进阶


知识回顾:

一、结构化编程

  • 1、面向过程编程
  • 2、只要数据类型满足,函数都可以去操作该数据
  • 3、耦合度高
  • 4、可扩展性低

二、面向对象与面向过程

  • 1、面向对象编程的核心:对象(属性-> 数据 行为 -> 方法)
  • 2、面向过程编程的核心:过程(程序 = 算法 + 数据结构)

三、面向对象编程的四大特性

  • 1、抽象:将同一类事物的共同特点概括出来的过程,抽象通过来实现
    • 类:类是对现实世界中的客观事物的抽象,类是具有相同属性与行为的对象的集合
    • 对象:万物皆对象,实实在在存在的一个个个体
    • 类与对象的关系:
      • 类是抽象的,对象是具体的
      • 类实例化之后形成一个对象。
      • 如:Date d;
  • 2、封装:将对象的属性和行为结合在一块,形成一个独立单元,可以选择的隐藏公开某些信息,可以提高数据的安全性。(c++通过访问权限和类一起实现)
  • 3、继承:基于一个已有的类创建新的类的过程,提高代码的复用性
  • 4、多态:一种借口多做实现,一个函数可以实现不同的功能。

四、类的定义

  • 类是具有相同属性和行为的对象集合
  • 类定义的基本语法:
class 类名{
    数据成员
    成员函数
}

类名命名的规则:不能以数字开头,包含数字、字母、下划线;不能是关键字,区分大小写

Class Date{
    private int, year, month, int day;
    public: void setValue(int y, int x);
    void printValue();
}

五、作用域运算符

  • 1、使用作用域运算符在类外定义类的成员函数
void Date::setValue(int y, int m, int d){
    Year = y;
    Month = m;
    Day = d;
}
  • 2、区分全局与局部变量:
    • 全局变量::变量名字指定

六、对象的创建与成员的访问

示例:

Date d;
d.setValue(2020, 1);

七、对象指针的创建与成员的访问

示例:

Date *p = new Date;
p->setValue(2020,1,1)

作业讲解:

1 主函数 2 private public protected 3 实参

1 x = i; y = j; mt.getx() 2 a.fun(1,10) a.fun(2,0) 3 public int A::

新知识讲解

一、对象数组的创建与成员的访问

示例:

Date dArr[2];
Date *p = new Date[2];
p->setValue(2020, 2, 2);
p->printValue();

二、类成员的访问权限

  • private 私有的 这个访问权限修饰符修饰的成员只能在本类中被访问
  • public 公有的 可以在程序员的任何地方都问
  • protected 受保护的,可以在本类和子类中访问 一般情况下,类中的数据成员使用private修饰,类中的成员函数使用public修饰.一个类中的私有成员对于其他类来说是隐藏的

在类中没有使用访问权限修饰符,默认是private

三、标识符的作用域与可见性

  • 标识符:变量名 类名 函数名 常量名
  • 作用域:标识符的有效范围
  • 作用域的分类:
    • 函数原型(也加函数声明)作用域: 函数原型如: void fun(int, int)
    • 块作用域: {}
    • 类作用域: class 类名 { }
    • 命名空间作用域: namespace 命名空间名{ }
  • 可见性 在同一个作用域,不能声明同名的标识符,在没有相互包含的不同的作用域中声明同名的标志符,互不影响;如果存在两个或者多个具有包含关系的作用域,外层声明的标识符,内层没有声明同名的标识符,name外层的标识符是可见的;如果在内层声明了同名的标识符,外层标识符在内层不可见(就近原则)

第三章 类和对象进阶

四、构造函数

在定义类的时候,是没有给类分配内存空间的;所以咋子定义类的时候不会被初始化数据成员;在创建好对象之后可以通过调用成员函数去初始化数据成员;可行,但是麻烦。

所以,在c++中,提供了一种特殊成员函数创建对象,初始化对象中的数据成员 -> 构造函数。构造函数的这作用就是初始化数据成员。

  • 构造函数的特点:

  • 1、构造函数与类名同名;

  • 2、无返回值,没有返回值类型;

  • 3、这个构造函数无需显示调用;

  • 4、构造函数在创建对象时,自定调用;

  • 5、在类中如果我们自己没有定义任何的构造函数,那么系统会自定生产一个无参的构造函数;一旦我们自己定义了构造函数,那么默认的无参构造函数就会消失,如果我们还需使用无参的构造函数,那么需要我们自己定义。

  • 6、构造函数可以重载

  • 构造函数定义的基本语法:

类名(参数列表){
    函数体
}

示例:

using namespace std;
class Date{
    private:
       int year,month,day;
   public:
       //定义一个无参的构造函数
        Date(int y, int m, int d){
           year = y;
           month = m;
           day = d;
            count<<"无参的构造函数"<<endl;
        }
       void setValue(int y, int m, int d);
       void printValue();
};

void Date::setValue(int y, int m, int d){
    year = y;
    month = m;
    day = d;
}

void Date::printValue(){
    cout<<year<<"/"<<month<<"/"<<day<<endl;
}

int main(){
    //创建对象,初始化对象的数据成员
    Date d(2020,1,1);
    d.printValue();
}


分类:C++
标签: C++ 课堂笔记
文章目录