• [UE4]C++ getter and setter


    问:以前面向对象没学好....
    最近老是在想,既然要设为private为什么还要写个setter来改变它的值呢?
    为什么不直接把它直接设成public倒省事?
    呵呵,谢啦

    答:用setter来改变数据成员的值时,操作必须由这个对象自己来触发
    用public来改变数据成员的值时,操作可以由任何对象来触发

    这是面向对象的封装,总之就是自己的数据成员,只对自己可见,也只有自己才能改变其值,慢慢体会吧!

    ----------------------

    从所周知,封装是面向对象的一个基本原则,封装可以限制对类中数据成员的直接存取。如果想要获取私有数据成员的值,通常的做法是在C++类中定义若干个“Setter”“Getter”成员函数,在C++术语也称“mutators”和 “accessors”,中文不知道该怎么描述。一个“纯粹”的 Setter 函数有一个形参,该形参的值被赋值给对象的成员,函数返回值为 void,Setters 和 Getters 函数一般都被声明为public。例如:

    class Employee
    {
        int id;
        //..
    };

    下面是这个类的一个 setter 函数:

    class Employee
    {
        public:
            void set_id(int n) {id=n;}
    };
        

    经典的getter一般没有参数,返回一个值;通常返回值被声明为const,例如:

    class Employee
    {
        public:
            int get_id() const { return id;}
    };
        

    setters 和 getters 的实现通常并没有什么技术含量,一个赋值,另一个返回值。因为简单,所以常常最为内联函数来实现。

  • 相关阅读:
    jqueryautocomplete
    了解CSS的查找匹配原理 让CSS更简洁、高效
    html5网页编码
    刚开始学习 mvc碰到的郁闷问题
    datatable 批量插入方法 求解?
    28个经过重新设计的著名博客案例(1120)
    递归调用中的return
    C++新建一个模板
    C++ 中用 sizeof 判断数组长度
    为什么MySQL选择REPEATABLE READ作为默认隔离级别?
  • 原文地址:https://www.cnblogs.com/timy/p/8627567.html
Copyright © 2020-2023  润新知