返回C ++中的成员函数类型

时间:2014-08-09 11:09:52

标签: c++

非静态成员函数可以与其内部定义的类相同吗?

请解释我,因为我是编程新手

//defining class complex and adding it
    class complex
    {
    private :
        int real;
        int imaginary;
    public:
        complex(){}
        complex(int x1,int x2);
        void display();
        complex add(complex n1,complex n2)   // can this member function be of complex? type
        { 
            complex temp;
            temp.real=n1.real+n2.imaginary;
            return temp; 
        }
    };

4 个答案:

答案 0 :(得分:1)

任何成员函数都可以具有返回类型,该类型是声明它的类类型。 考虑例如operator =重载。 operator =是该类的非静态成员函数。

complex & operator =( const complex & )
{
   // some stuff
   return *this;
}

答案 1 :(得分:1)

没有这样的限制。成员函数可以具有普通函数可以接受的任何返回类型。

您的示例可行,但将此类add函数视为无效, 因为它不会使用它被调用的对象的状态。

例如,你会这样做:

complex a,b,c,d;

a = b.add(c,d);

a将是对cd进行操作的结果。 <{1}}将不涉及任何内容。

答案 2 :(得分:0)

非静态成员函数可以与类名具有相同的类型吗?

* 复杂添加(复数n1,复数n2)//此成员函数是否可以是复杂类型

是的是简单的答案

答案 3 :(得分:0)

当然,是的。但是在你拥有函数add()的方式中,它是静态成员函数还是非静态函数并不重要,因为你没有使用调用对象的成员。 您可能会发现代码更具表现力:

complex operator+(complex operand)
{
  return complex(real + operand.real, imaginary + operand.imaginary);
}

然后您就可以使用&#39; +&#39;运营商以自然而富有表现力的方式,例如:

complex a(1,2);
complex b(3,4)
complex c = a + b;

在这种情况下,将为operator+调用a方法,并且在运算符的主体内,成员变量realimaginary将隐式为{ {1}}的成员a将由b代表。