C++:面向对象(OOP)
1、类的三特点:封装,继承,多态
2、类:就是某一类事物的模板描述
2.1属性:实物的特征的描述
2.2方法:某一类实物的功能的描述
C++类的定义:
class 类型名
{
属性
方法
};
2.3对象:某一个类事物的具体实例。(类的实例化)
对象的组成:属性(就是一个实物的特征),方法(事物具有的功能方法)
实例化: 类名 对象名;
注:一个类属于所有人该类的实物,一个实物只能属于一个类
2.4消息:向某一个对象(具体的实体)发送一个消息
对象.消息
引用特征属性: 对象.成员;
指针->成员
eg: we.age;
2.5封装:让数据与外界产生隔离
public 公有 :类内外界都可访问
protected 保护:外界不能访问,自己可以访问
private 私有:外界不能访问,自己可以访问
2.6分配的对象空间:只有数据空间
2.6构造函数:对象只能由构造函数来分配空间并初始化
class 类名
{
//构造函数
类名() 无形参的构造:默认构造函数
{
}
};
1、默认构造函数:没有形参
类名()
{
}
注:如果用户不显示的定义构造函数,编译器会默认添加无参构造函数
2、拷贝构造函数:对象的复制(调用拷贝构造函数)
类名(类名&);
注:如果用户不显示的定义拷贝构造,编译器会默认添加拷贝构造
浅
深
2、对象的生命周期:
1、分配空间:数据区(动态区,静态区,堆区)
动态区:在函数内实例化的(非staic)对象
当函数被调用时,才会分配空间调用构造函数
静态区:在函数外,或者staic修饰的对象
当程序运行就会分配空间调用构造函数
注:如果static修饰的局部静态区变量,当函数被调用时
才调用构造函数
堆区:两个运算符分配空间与释放空间
new 类型(实参)
delete
注:malloc只分配数据空间,new分配空间,实例化对象
2.7定义类的方法时:
1、在类内定义
class student
{
方法:
void show()
{
}
};
2、在类外定义:属于该类
1、先在类内声明
class student
{
方法:
void show();
};
void student::show()
{
}
2.8初始化列表:当实例化时,对象调用构造函数分配空间和初始化
方法1:
student()
{
id=0;
sex='m';
strcpy(name,"nul");
}
方法2:
student():id(值),sex(‘m’)
{
strcpy(name,"nul");
}
方法1与方法2等价
2.9在类外如何访问非公有成员?
解决方法:该类提供一个公有的接口
2.10类成员的作用域:
1类的成员作用域:只在类内(只能在类内访问,不能在类访问)
2、作用域符:
类名::成员;
2.11对象指针变量:专门用于存储对象的指针
定义指针变量: 类型名* 变量名; (没有实例化)
成员属性中有一个特殊的指针:this 指向自己
eg: 人类:李飞,刘淼。。。
猫:小花,小黑,小美
狗:刘二狗,。。
//注:分号不能忘记