类和对象

关键词解释

对象:具有属性(数据)和行为(函数)的, 对象是系统的基本单位

封装:封把一个对象的一部分属性和功能对外界进行屏蔽,留下少量接口,装把数据和操作代码装到一个对象中

抽象:表示同一类事物的本质

类是对象的抽象,对象则是类的具体实

继承与重用:存在基类(父类)与派生类(子类)

多态性:同一个消息,不同的对象有不同的响应

面向对象

面向对象是一种编程思路和建模思想,与编程语言没有直接关系

区别

区分方法:看是否有一种用户自定义的变量类型

面向对象对比面向过程的好处

  1. 数据与处理程序分开
  2. 数据和处理过程是隐蔽的
  3. 数据结构改变,不会改变其他的处理过程

类的声明和对象的定义

:同类型的对象抽取共同性

类其实是一种自定义数据类型 , 不占存储空间,对象占空间

=数据+成员函数类 = 数据 + 成员函数

实例化:定义对象的过程,new 一个对象

访问限定符

protected:不能被类外访问,允许被“派生类”的成员函数访问
private
public

定义类和对象

1.先声明,再定义
2.在声明的同时定义对象

class Student
{
.....
}stud1,stud2;

3.不出现类名,直接定义对象(不推荐)

class和struct的区别

class:使用class定义类时,默认private
struct:使用struct定义类时,默认public

定义成员函数

注意构造函数和成员函数不能化等号

在类内定义

在类外定义

在类中声明函数(也可以声明最前面加上inline,让函数变成内置函数),然后在函数名前面写上 类名+全局作用域限定符(如果声明的时候加上inline就需要在函数最前面再加上inline

class Student
{
public:
void display();
private:
int num;
};
void Student::display(){
cout<<num;
}

成员函数的存储方式

使用sizeof(类名或变量类型) 可以获取该类对象所占用的字节数

填写类名时,输出的字节数等于该类所有变量占的内存

cout<<sizeof(类名或变量类型)<<endl;

对象成员的引用

通过对象名和成员运算符访问

通过指针访问对中的成员

对象类型指针

类名 *指针名

指针指向符号 ** ->** ,p->hour 等效 t.hour

class Time
{
public:
int hour;

};
Time t,*p; //创建一个对象和对象类型指针
p = &t; //将对象地址给对象类型指针
cout<<p->hour; //也可以使用cout<<p.hour

通过对象的引用来访问

直接引用

Time t1;
Time &t2=t1;

在向函数传递时引用

class Time{


};
int main(){
void set(Time&) //声明函数
set(t1);
set(t2);
set(t3);

}
void set(Time& t){


}