C++学习笔记 面向对象封装

一、类与对象

: 对某一事物的抽象(例如下图的 猫科动物这一抽象群体

对象:某一类事物的个体,具体且唯一(例如下图的 老虎、狮子等)

在这里插入图片描述
在这里插入图片描述


1、类的声明(成员函数实现方法有两种)

方法一
在这里插入图片描述

方法二
在这里插入图片描述


2、访问方法(普通对象、指针对象)

设:下类的方法 print_weight 假设已实现
在这里插入图片描述

普通对象访问

Catamount tiger;		  //定义了一个普通对象
tiger.weight = 200;		  //对象tiger的体重进行赋值
tiger.print_weight();	 //打印对象tiger的体重 

指针对象访问

 Catamount * tiger = new Catamount; //定义了一个指针对象
 tiger -> weight = 200;		  		//指针对象tiger的体重进行赋值
 tiger -> print_weight();	 		//打印指针对象tiger的体重 

3、访问权限

pricate(私有)
public(公有)
protecyed(保护)

在这里插入图片描述

若对象想要访问/操作类中的私有成员/保护成员 则应该通过公有函数 来访问/操作成员

举例:
在这里插入图片描述


二、构造函数

在构造(实例化)对象时自动调用此函数,往往用来初始化对象内的成员变量


当类中没有构造函数时,编译器会自动生成一个构造函数。

在这里插入图片描述

1、构造重载

针对不同的初始化方式,可以重载构造函数
只要构造函数满足重载要求就可以行成构造重载

在这里插入图片描述
下面是常见的构造函数 初始化列表操作代码

class A
{
public:
    int a;
    float b;
    A(int data_1,float data_2);

};

在实例化对象的同时将其内部的相关成员变量进行赋值(任意权限:公、私、保护)
A::A(int data_1,float data_2) : a(data_1),b(data_2)
{

}

2、拷贝构造

扩展:

我们已经知道了构造重载,只要其构造形参列表 不同 就可以构成重载
当该构造重载函数的形参类型为 它自己的类时,那么这个构造就是 拷贝构造

拷贝构造一般用于:主动创建对象时,用一个对象去初始化另一个对象
在这里插入图片描述


三、析构函数

在销毁对象时自动调用此函数,往往用来释放对象内申请的资源
与类名相同,在前面加位取反符~。且不能有任何参数与返回值

一个类有且只有一个析构函数,所以肯定不能重载

在这里插入图片描述


四、Static关键字 在C++中的注意事项

static表示静态关键字,可以用于修饰成员变量与成员函数

1、修饰成员变量

修饰的成员变量属于类不属于具体的对象

静态成员使用前 必须初始化 ,否则会在linker(链接)步骤时出错

语法
在 class 中进行声明:static <类型修饰符> <变量名>
在 class 外进行初始化:<类型修饰符><类名>::<变量名> = <初始化值>

在这里插入图片描述

static 修饰的成员变量 属于类 不属于具体的对象,对于所有的对象是共享的,并在对象创建之前就已经产生了!
在成员函数中可以正常访问静态成员变量
在这里插入图片描述

关于static修饰成员变量的访问权限:
在这里插入图片描述


2、修饰成员函数

语法
static <函数返回值><函数名>(参数列表)

不能使用 this 指针,与类关联,不与对象关联,在调用静态函数时,可以在没有对象时调用

可以通过类名直接访问,不能访问非静态成员,只能访问静态成员

在这里插入图片描述


五、Const关键字 在C++中的注意事项

1、修饰成员变量

const成员变量只能在初始化列表中初始化

初始化后,该对象的 const成员变量的值将无法再被修改!
在这里插入图片描述

关于const 的访问权限
在这里插入图片描述


2、修饰成员函数

作用: 防止成员函数修改非静态成员变量的值,所以 const成员函数内部只能对静态成员变量的值进行修改

const成员函数也可以与同名非const成员函数构成函数重载,创建const对象时调用的为const修饰的成员函数

虽然只能修改静态成员,但是依旧可以访问非静态成员
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值