读取private成员变量

C++中如何编写方法获取private成员变量?... C++中如何编写方法获取private成员变量? 展开
 我来答
Cansluck
推荐于2018-03-02 · 知道合伙人软件行家
Cansluck
知道合伙人软件行家
采纳数:502 获赞数:1407
毕业于湖南农业大学计算机科学与技术专业,学士学位。从事java开发4年,读过大量的java开发的书籍

向TA提问 私信TA
展开全部

1、在类中声明private的变量

2、给出get,set方法

3、在其他类中实例化1中的类,然后通过类的对象来点出成员变量,例如:

public class User{
    private String name;
    
    public void setName(String name)
    {
        this.name = name;
    }
    
    public String getName()
    {
        return name;
    }
}

public class Test{
    public static void main(String[] args)
    {
        User user = new User();
        user.setName("张三");
        System.out.println(user.getName());
    }
}
FrankHB1989
推荐于2017-11-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3172万
展开全部
有两类方法。
一是使用返回值类型和这个类型相同或为这个类型的引用类型(多用于结构体或类,如对于成员struct T a,这里返回值类型可以是T或者const T&或者T&,看使用需要选择)成员函数,函数体中直接这个private成员变量。
代码如LS CNnumen911 ,不过int getA()后面分号漏了,而且返回值类型明显有问题(- -)……
class A{
private:
int a;
public:
int getA();
};
int A::getA()
{
return a;
}
以上是间接引用。如果需要直接无视private引用,只能在这个成员变量所在类的内部,或者使用友元函数/友元类。
如:
class A{
private:
int a;
public:
friend class B;
friend void func(class A&);
int getA()
};

void A::getA()
{
return a;
}
//因为在类内部只是声明,还需要实现类B和函数func的定义(不需要加friend关键字),这里从略。
这样在类B和函数function的定义中就可以直接访问类A的任何private或protected成员(当然仍然保持访问public成员的能力)。
====
[原创回答团]

参考资料: 原创

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CNnumen911
2010-04-07 · TA获得超过1133个赞
知道小有建树答主
回答量:401
采纳率:100%
帮助的人:679万
展开全部
写个类成员函数拜:

class A{
private:
int a;
public:
int getA()
};

void A::getA()
{
return a;
}

想用a的地方调用getA就行了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NoproblemSpace
2010-04-08 · TA获得超过139个赞
知道答主
回答量:112
采纳率:0%
帮助的人:35.1万
展开全部
使用成员函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慎重还可靠灬宝贝f
2015-11-07 · TA获得超过12.9万个赞
知道大有可为答主
回答量:1.9万
采纳率:52%
帮助的人:2663万
展开全部
  有时候为了安全,需要把把类的属性定义为private。但是,但是我们有时候却需要去操作这些私有成员变量,如果直接访问是会报错的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来为私有成员变量赋值和获取值,以及检查属性的“__isset()”和删除属性的方法“__unset()”。
  在PHP5中给提供了专门为私有成员变量设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
  //__get()方法用来获取私有属性
  private function __get($property_name)
  {
  if(isset($this->$property_name))
  {
  return($this->$property_name);
  }else
  {
  return(NULL);
  }
  }
  //__set()方法用来设置私有属性
  private function __set($property_name, $value)
  {
  $this->$property_name = $value;
  }

  有了这2个方法以后,就可以直接执行:
  echo $instance->$property
  或 $instance->$property = “a”;
  来获取和修改private变量的值了,如果没有手动添加__get();和__set();方法则会报错,因为是要访问的是私有变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式