1.C++ 关于类函数访问同类对象的私有变量

2017-09-22  本文已影响0人  久伴licy

一般理解类的私有成员变量不能通过对象直接进行访问,需要借助公有成员函数对其进行相关的操作.但是有一类情况可以直接通过对象对私有成员变量进行访问.

class stock{

private:
   double total_val ;
public:
   stock(double num);
   stock  topval(stock s);
};

stock::stock(double num)
{
   total_val = num;
}
stock  stock::topval(stock  s)
{
   if (s.total_val > total_val)
       return s;
   else
       return *this;
}

int main()
{
   stock a(10), b(11),c(1);
   c = a.topval(b);
   return 0;
}

在if (s.total_val > total_val)中就直接使用对象s访问了其私有成员变量total_val,原理为:

(1).封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量.
(2).在编译器遇到total_val变量时,将会在其所属对象s所属的类域中查找该符号,既然查找的是类域,由于topval函数属于stock类,topval函数可以访问stock类中的所有变量,所以topval函数可以找到s.total_val.

上一篇下一篇

猜你喜欢

热点阅读