使用参数与成员变量的方法

时间:2017-02-22 13:23:43

标签: c++ methods arguments

当我编写一个类方法并希望将参数传递给此方法时,我常常想知道什么是“更好”。

  1. 选项:使用成员变量

    class Foo {
        public:
            int x, y, result;
    
            void SomeMethod()
            {
                x = 4;
                y = 10;
                AddMethod();
            }
    
            void AddMethod()
            {
                result = x + y;
            }
    }
    
  2. 选项:传递参数

    class Foo {
        public:
            int result;
    
            void SomeMethod()
            {
                result = AddMethod(4, 14);
            }
    
            int AddMethod(int x, int y)
            {
                return (x + y);
            }
    }
    
  3. 就我个人而言,我通常倾向于使用第二种选择,因为对我来说它更具可读性和易懂性。使用一个或另一个代码的正确理由是什么?

3 个答案:

答案 0 :(得分:1)

OOP中的类是描述对象的东西。以现实世界的物体为例,一辆汽车。汽车可以有accelerate_to_speed(double speed);等功能,还有Color color;等成员。方法是对象所做的事情,成员描述对象或显示拥有(汽车可以有引擎Engine engine;)。什么是成员和什么是方法的整个概念在于面向对象编程的基础,并且不依赖于语言,但语言依赖于它。

你仍然可以用这种方式写一辆车:

class Car {
    ...
    double target_speed;
    ...
    void set_target_speed(double speed) {
        target_speed = speed;
    }
    void accelerate_to_speed() {
        current_speed = target_speed;
    }
    ...
}

语言可以允许它,但它意味着什么?汽车是用目标速度描述的吗?如果不使用汽车,目标速度意味着什么?

答案 1 :(得分:-3)

这取决于目的,使用此类的内容。成员是对象的一些特征。论证是一种外部信息。

答案 2 :(得分:-3)

选项2可能更适合您,但它不是一个好的编程习惯。通常我们不直接传递数字,我们使用它们的名称来提高代码可读性,因为这些数字指的是我们试图解决的实际项目/问题。但是,w.r.t性能可能会在选项2中保存8个字节。