目录
一、类
1.类的定义
2.类的访问限定符
3.类的封装
4.this指针
二、类的默认成员函数
1.构造函数
2.析构函数
3.拷贝构造函数
三、类中的特殊成员
1.const修饰成员和对象
2.static静态成员
3.友元
4.内部类
一、类
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,通过对象之间的交互完成。 对象的共同特征由属性和功能组成,一般使用变量描述共同的属性,使用函数描述共同的功能。
1.类的定义①使用结构体(struct)描述
C++对结构体的语法进行了扩展,结构体中不但可以有成员变量,也可以有成员函数。因此结构体可以用来描述对象的类型,在C++中,对象的类型叫类。
struct Test
{
//成员变量
int a;
double b;
//成员函数
int Add(int x, int y)
{
return x + y;
}
};
在创建一个变量时可以不需要struct关键字:
Test t; //创建一个对象t
注意:C语言中结构体不可以有函数成员,但可以通过函数指针调用函数。
②使用类(class)描述对象的类型
class也可以用来描述对象的类型,语法和struct几乎一致 。
class className
{
//类体:由成员变量和成员函数组成
}; //注意后面的分号
其中class为定义类的关键字,className为类的名字,{}中为类的主体,注意定义结束时加上后面的分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数。
用类类型创建对象的过程,称为类的实例化。,实例化出的对象将占用实际的物理空间来存储类成员变量。
注意:类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外使用成员,需要使用“::”作用域解析符指明成员属于哪个类域。
定义和声明位置:
①声明和定义全部放在类体中。需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
②声明放在头文件(.h)中,定义放在源文件(.cpp)中(推荐)。
类的前置声明:声明一个类名,类中的内容的具体实现实在之后的代码中定义。当类还未定义时需要使用该类类型就可以使用前置声明。
class 类名; //前置声明
2.类的访问限定符类中的成员具有访问属性,访问属性分为三类:
访问属性
public --- 公有属性
protected --- 保护属性
private --- 私有属性
特点
可以在类外和类内访问该成员
可以在类内部和子类中访问该成员
只能在类内部访问
struct中的成员的默认访问属性是公开的,class中的成员的默认访问属性是私有的。
C++中的struct和class的区别是什么? C++需要兼容C语言,所以C++中的struct可以当成结构体去使用。C++中的struct还可以用来定义类,和class定义类是一样的,区别是struct的成员默认访问权限是public,而class的成员默认访问权限是private。
在实际开发中,应该显示指定成员的访问属性:
class 类名{
public:
公有成员;
protected:
保护成员;
private:
私有成员
};
一个类中同个访问属性可以多次出现,通常把公开的成员写在类的最前面,私有成员写在类的最后 。一般来说,成员变量总是设置为私有属性,如果类外需要访问就提供公开的接口成员函数。
3.类的封装封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
C++实现封装的方式:用类将对象的属性和方法结合在一块,让对象更加完善,通过访问权限,选择性的将其接口提供给外部的用户使用。
class Time{
//属性 ----- 成员变量
private://私有成员
int hour;//时
int min;//分
protected://保护成员
int sec;//秒
public://公有成员
//构造函数
Time(int h=23,int m=59,int s=55):hour(h),min(m),sec(s)
{
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?