C++ 之封装

基础的知识就不写了,主要是做笔记,忘了可以快速捡起这些知识。

类定义

class ClassName
{
public:
	...
private:
	...
};

实例化

int mian()
{
	ClassName varName;//栈中实例化,使用完不需要手动回收
	ClassName arrVar[10];
	
	ClassName *p=new ClassName();//堆中实例化,使用完需要手动回收,delete p;如果是数组 delete []p;
	ClassName *q=new ClassName[10];
}

对象成员的访问

	varName.fun();//栈定义的对象
	arrVar[0].fun();
	p->fun();//堆上定义的对象
	q[0]->fun();

封装

class ClassName
{
public://定义相关函数进行封装
	dataType getVar(){...}
	void setVar(dataType var){...}
	...
private://定义相应的私有数据成员
	datatype priVar;
	...
};

内联函数
编译时将函数代码和实参代替函数调用语句,要求函数简单。

inline void FuncInline()
{
	printf("FuncInline\n");
}
void Func1()
{
	FuncInline();
}

类内定义
将成员函数的函数体写在类内。编译器会优先以inline内联函数方式进行编译(不会显示出来),但是无法编译成内联函数时,才会以普通函数编译方式进行编译。
类外定义

class ClassName
{
public://定义相关函数进行封装
	dataType getVar();
	void setVar(dataType var);
	...
};
void ClassName::getVar(){...}
void ClassName::serVar(dataType var){...}

分文件类外定义

ClassName.h

class ClassName
{
public://定义相关函数进行封装
	dataType getVar();
	void setVar(dataType var);
	...
};

ClassName.cpp

include "ClassName.h"
void ClassName::getVar(){...}
void ClassName::serVar(dataType var){...}

内存分区

栈区:int x=0;int *p=NULL; //由系统进行控制
堆区:int *p=new int[20]; //需要程序员自己管理
全局区:存储全局变量及静态变量
常量区:string str="hello";
代码区:存储逻辑代码的二进制//编译之后的代码

定义完类,是不会占用栈区和堆区的内存; 实例化后,每个对象会在栈上占用一段内存; 逻辑代码只编译出一份,放在代码区,供所有对象使用

类的初始化

构造函数

1.在实例化时自动执行
2.构造函数与类同名
3.构造函数无返回值
4.构造函数可以有多个重载形式
5.实例化对象时仅用到一个构造函数
6.当用户没有定义构造函数时,编译器自动生成一个构造函数,但不做任何事情

public:
	ClassName(){...}//无参
	ClassName(...){...}//有参
	//上述两行构成重载构造函数,规则是参数个数不同,或类型不同,或顺序不同。

默认构造函数
在实例化不需要传递参数的构造函数称为默认构造函数
构造函数的初始化列表

public:
	ClassName():va1("hello"),var2(10){}//先于构造函数执行,初始化列表只能用于构造函数,此方式速度快效率高
	//初始化列表可以初始化对象中的常量,而构造函数不可以
private:
	string var1;
	int var2;

拷贝构造函数

	ClassName var1;
	ClassName var2=va1;
	ClassName var3(var1);
	//后两句会执行拷贝构造函数
	//格式:类名(const 类名 & 变量名)
	例如
	public:
	ClassName(const ClassName & var){}

析构函数

	~ClassName(){}//不允许加参数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值