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

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

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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,866评论 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,541评论 1 51
  • 一、接口 1.举个例子,A想要去B的家里做客,当然,A不能直接穿墙或瞬移进入到B家里去访问,他必须通过某种方式或渠...
    ZYiDa阅读 742评论 0 0
  • 有时候堕落放纵和积极面对只差一个转身…可往往比较容易选择前者,因为面对一些让自己痛苦的事情确实不易,以为把自己灌醉...
    轻舞肥羊阅读 224评论 0 0