C++ Primer 第七章 7.4 类的作用域 练习和总结

本文深入探讨了C++中的类作用域,包括如何在类外定义成员函数时使用类作用域运算符访问成员,名字查找的规则,以及在函数体内外部的作用域差异。通过实例解析了类中类型别名的位置重要性,以及成员函数声明和定义时的名字查找流程。
摘要由CSDN通过智能技术生成

7.4 类的作用域

一个类就是一个作用域 ,在类中定义的类型,需要通过类作用域运算符访问。

class A{
   
	public:
	using pos = int;
};
//通过作用域限定符来访问
A::pos temp_a;

因为类本身就是一个作用域,所以我们在类外定义成员函数时,类的数据成员对我们来说是不可见的,所以在类外定义成员函数,需要加上加上类的作用域

class A{
   
	public:
	using pos = int;
	pos get_value(int pos);
};
//返回值类型需要加A::,函数体中的内容以及在类的作用域范围之内,所以不用加
A::pos A::get_value(int pos) {
   
	//todo
}

我们会在函数名字前面加上A的作用域,表示这个函数是A中定义的,属于A的作用域范围,所以A::后面的内容,可以直接访问函数中的成员。

但是返回值类型在函数名的前面,所以如果成员函数在外部定义,则返回值类型在类的作用域之外,如果返回值类型使用了类中定义的成员,则要使用类作用域运算符。

练习

7.33
因为pos类型是在Screen类中定义的,从该成员函数的定义可以看出,这个成员函数是在类的外部定义的,而返回值类型pos,是在类中定义的,所以需要为返回值pos加上类作用域运算符。

Screen::pos Screen::size() const{
   
	return height*width;
}

名字查找和类的作用域

所谓的名字查找,就是说我们定义一个变量,它是变量名,如果我们在某一个地方使用了变量名,我们需要知道这个变量名具体指的是哪个变量。

在没有学习类得知识时,名字查找按照这样的流程。

1.首先在定义变量的块中寻找声明语句,这只能从使用该变量的前面的语句开始找。
2.如果没有找到,就在外层作用域找,只能从定义该块的前面的语句中找。
3.如果没有找到就再

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值