struct C ++中的函数

时间:2019-02-08 14:15:17

标签: c++ struct

struct segment{
    int _gcd;
    int _count;
    segment(){
        _gcd=0;
        _count=0;
    }
    segment(int val)
    {
        _gcd=val;
        _count=1;
    }
    void mergee(segment left,segment right)
    {
        _count=0;
       _gcd=gcd(left._gcd,right._gcd);
       if(_gcd==left._gcd)
       {
           _count+=left._count;
       }
       if(_gcd==right._gcd)
       {
           _count+=right._count;
       }
    }
}seg[4*N];

我在CodeForces中寻求解决蚁群问题的方法,偶然发现https://w84iit.wordpress.com/2017/06/20/ant-colony-solutioncodeforces/。最令我困惑的是这struct部分。那是结构内部的功能声明吗?我还看到struct中也有函数重载。我对struct内部的函数不太熟悉,因为Google搜索还显示将struct传递给外部函数更为常见。结构函数如何工作?他们只能修改struct内部声明的变量吗?我可以退货吗?上面的示例仅使用struct中的函数来修改其变量值。

2 个答案:

答案 0 :(得分:7)

在C ++中,C的struct被概括为一个类。

实际上,structclass之间的唯一区别是数据成员的默认访问权限和继承。

是的,struct可以包含功能,就像class可以一样。

答案 1 :(得分:2)

该类内部的函数称为非静态成员函数。

它具有一个隐含的对象参数,可通过this访问。

调用时,对象参数位于类成员访问权限的.的左侧:

struct x {
    int data_member;
    int f(int i){
        return data_member+i;
    }
};

x y;
y.f(10);

等同于:

struct x {
    int data_member;
};

int f(x* _this, int i) {
   return _this->data_member + i;
}

x y;
f(&y,10);