c++学习笔记(四)
目录[*]类 & 对象
[*]封装
[*]访问权限
[*]类的构造函数&析构函数
[*]构造函数的分类及调用
[*]拷贝构造函数的调用时机
[*]构造函数调用规则
[*]深拷贝与浅拷贝
[*]初始化列表
[*]类对象作为类成员
[*]静态成员
[*]C++对象模型和this指针
[*]成员变量和成员函数分开存储
[*]this指针概念
[*]空指针访问成员函数
[*]const修饰成员函数
[*]友元
[*]全局函数做友元
[*]类做友元
[*]成员函数做友元
[*]运算符重载
[*]加号运算符重载
[*]左移运算符重载
[*]递增 / 递减运算符重载
[*]赋值运算符重载
[*]关系运算符重载
[*]函数调用运算符重载
[*]继续
[*]根本语法
[*]继续方式
[*]构造和析构顺序
[*]继续同名成员处理方式
[*]多继续
[*]菱形继续
[*]多态
[*]多态的根本概念
[*]多态案例(一)——计算器类
[*]纯虚函数和抽象类
[*]多态案例(二)——饮品类
[*]虚析构和纯虚析构
[*]多态案例(三)—— 电脑组装
类 & 对象
c++面向对象的三大特征为:封装、继续、多态
封装
封装的意义:
[*]将属性和行为作为一个整体,体现生活中的事物(数据成员和方法)
[*]将属性和行为加以权限控制(访问修饰符)
类中的属性和行为我们一般称为成员,属性为成员属性,行为是成员方法
https://www.runoob.com/wp-content/uploads/2015/05/cpp-classes-objects-2020-12-10-11.png
这里以盒子为例,定义一个类,并声明两个对象
class Box
{
//访问权限
//公共权限
public:
//数据成员
double lenth; //长
double breadth; //宽
double height;//高
//方法
//求盒子体积
double cal_Volume()
{
return lenth * breadth * height;
}
};
int main()
{
Box box1; // 声明 box1,类型为 Box
Box box2; // 声明 box2,类型为 Box
//对象box1和box2都有他们各自的成员
}访问权限
类在计划时,可以把属性和行为放在差别的权限下来加以控制
访问权限有三种:
[*]public 公共权限
其成员类内可以访问,类外可以访问
[*]protected 保护权限
其成员类内可以访问,类外不可以访问,但在子类(派生类)中可以访问
[*]private(默认) 私有权限
其成员类内可以访问,类外不可以访问,不可查看
class Person
{
public:
String name;
protected:
int age;
int id_card;//默认为private
public:
func()
{
name = "alen";
age = 26;
id_card = 114514;
}
};
int main()
{
Person p;
p.name = "walker";
p.age = 23;//报错,类外不能访问
p.id_card = 1919810;//报错,类外不能访问
}struct和class区别
两者的唯一区别在于默认的访问权限:
[*]struct默认权限为公共
[*]class默认权限为私有
[*]class C1
{
int a;//默认是私有权限 private
};
struct C2
{
int a;//默认是公共权限 public
};成员属性设置为私有
优点:
[*]将所有成员属性设置为私有,可以自己控制读写权限
[*]对于写权限,我们可以检测数据的有效性
class Person{ public: //设置名字 void setName(string name) { m_Name = name; } //设置偶像 void setIdol(string idol) { m_Idol = idol; } //设置年事 void setAge(int age) { if (age < 0 || age > 150) { cout
页:
[1]