C++备考(四)类的封装和隐藏

学习没有捷径,但考试有捷径

临近考试,虽然之前对一些概念搞清楚了,但时日一长,很多又模糊了。因此利用整理成章,将知识重拾。

考试的范围如下:

  1. 常量(const、符号、字符串常量、立即数)
  2. 引用和指针
  3. 类的封装和隐藏(静态成员、友元函数)
  4. 类的初始化(初始化方式和顺序)
  5. 类的继承(继承方式、构函列表、多继承)
  6. 类的多态性(函数重载、运算符重载、虚函数、虚函数表)
  7. 类的作用域概念
this指针
  1. 隐含参数,指向调用成员函数的对象
void Person::copy(Person &p)
{
	if(this==&p)
		return;
	else
		strcpy(this->name,p.name);
}			
  1. this 在某个调用函数的对象中是常量(型的)指针,但可以将其转化为指向常量的常量指针
getValue()const
{
	return c;
}	

运行截图

静态

静态成员
静态数据成员

该类的所有对象共享此数据

class C
{ 
public:
 	static int c;
 	int getValue()const
 	{
  		return c;
 	}
};

程序一开始运行便生成,必须在函数体外进行初始化,否则造成链接错误。

int C::c = 0;
静态成员函数

没有this指针,只能访问静态数据成员

static void add(C&t)
{
  	t.c3 = c1 + c2;
}

除非传入对象参数

  • 公有成员可以 通过C:: <function name> 进行访问,但私有不可以,私有静态成员函数只能在类内访问
  • 运行截图

常量

常量对象

定义的同时必须初始化,且程序运行期间不进行修改

const C t(3);
cout << t.getValue() << endl; 

运行截图

常量成员
常量数据成员

创建对象时必须初始化列表中初始化,不能在函数体中。且不能再更新

const int c4;
C(int a=4) :c(a),c4(a){}
常量成员函数

在函数定义后加const

int getValue()const;
  • 类体外定义不得遗漏const,与静态相区分
  • const可区分重载函数,普通对象使用普通函数,常量对象对应常量函数

友元

通过成员函数访问私有成员和保护成员,频繁访问增加开销,友元关系可使外部函数或类访问此类的成员(尤其是私有成员),节省开销

友元函数
  1. 可在类的任意部分定义,外部使用无限制
  2. 不含this指针,故需要在传入参数时传入引用或指针
友元类

可以访问所有友元关系的私有成员和保护成员

friend class B;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值