美文网首页
1.C++ 关于类函数访问同类对象的私有变量

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

作者: 久伴licy | 来源:发表于2017-09-22 19:44 被阅读0次

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

    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.C++ 关于类函数访问同类对象的私有变量

          本文链接:https://www.haomeiwen.com/subject/qmofextx.html