【C/C++】类的作用域

C++语言中允许声明全局变量,并且类成员的实现是在类的外部,因此经常会遇到作用域的问题。这里简单列出来平时遇到的一些问题。

 

一、类成员函数定义中的参数

一个简单的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
class  T
{
     public :
         typedef  double  Num;
         void  setValue(Num num);
     private :
         Num value;
};
 
void  T::setValue(Num num)
{
     this ->value = num;
}

其中,Num是在类T中定义的类型,setValue是类T的成员函数的定义(在类外部),因此setValue一定是在类的作用域范围内的,当然形参表也在类的作用域内。因此上面的用法是合法的。

二、成员函数的返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
class  T
{
     public :
         typedef  double  Num;
         Num getValue();
     private :
         Num value;
};
 
Num T::getValue()
{
     return  this ->value;
}

 

与形参类型相比,返回值的类型位于成员函数体的前边,因此C++不认为Num是在类的作用域内,如果对上面的代码进行编译,编译器会报错。正确的写法是:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class  T
{
     public :
         typedef  double  Num;
         Num getValue();
     private :
         Num value;
};
 
T::Num T::getValue()
{
     return  this ->value;
}

FROM: http://www.cnblogs.com/bigwangdi/archive/2012/12/17/2822541.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值