类和对象
关键词解释
对象:具有属性(数据)和行为(函数)的, 对象是系统的基本单位
封装:封把一个对象的一部分属性和功能对外界进行屏蔽,留下少量接口,装把数据和操作代码装到一个对象中
抽象:表示同一类事物的本质
类是对象的抽象,对象则是类的具体实
继承与重用:存在基类(父类)与派生类(子类)
多态性:同一个消息,不同的对象有不同的响应
面向对象
面向对象是一种编程思路和建模思想,与编程语言没有直接关系
区别
区分方法:看是否有一种用户自定义的变量类型
面向对象对比面向过程的好处
- 数据与处理程序分开
- 数据和处理过程是隐蔽的
- 数据结构改变,不会改变其他的处理过程
类的声明和对象的定义
类:同类型的对象抽取共同性
类其实是一种自定义数据类型 , 不占存储空间,对象占空间
实例化:定义对象的过程,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){
}