在c++中,结构可以有构造函数吗?

我一直试图解决这个问题,但我没有得到语法。


当前回答

在c++中,类和结构之间的唯一区别是,成员和基类在类中默认是私有的,而在结构中默认是公共的。

struct可以有构造函数,语法和类一样。

其他回答

struct TestStruct {
        int id;
        TestStruct() : id(42)
        {
        }
};

在c++中,struct和class都是相等的,除了struct的默认成员访问说明符是public和class有private。

在c++中使用struct的原因是c++是C的超集,必须向后兼容遗留的C类型。

例如,如果语言用户试图在他的c++代码中包含一些C头文件legacy-c.h,它包含struct Test {int x,y};struct Test的成员应该像C一样可以访问。

是的,c++中的结构和类是相同的,除了结构成员默认是公共的,而类成员默认是私有的。在类中可以做的任何事情,在结构中也应该可以做。

struct Foo
{
  Foo()
  {
    // Initialize Foo
  }
};

正如其他答案所提到的,在c++中,结构体基本上被视为类。这允许您拥有一个构造函数,可以使用默认值初始化结构。下面,构造函数将sz和b作为参数,并将其他变量初始化为一些默认值。

struct blocknode
{
    unsigned int bsize;
    bool free;
    unsigned char *bptr;
    blocknode *next;
    blocknode *prev;

    blocknode(unsigned int sz, unsigned char *b, bool f = true,
              blocknode *p = 0, blocknode *n = 0) :
              bsize(sz), free(f), bptr(b), prev(p), next(n) {}
};

用法:

unsigned char *bptr = new unsigned char[1024];
blocknode *fblock = new blocknode(1024, btpr);

语法与c++中的类是一样的。如果你知道在c++中创建构造函数,那么在struct中也是一样的。

struct Date
{
    int day;

    Date(int d)
    {
        day = d;
    }

    void printDay()
    {
        cout << "day " << day << endl;
    }
};

Struct在c++中可以把所有东西都作为类。如前所述,区别只是默认情况下c++成员具有私有访问权限,但在结构中它是公共访问权限。但是根据编程考虑,对于仅数据结构使用struct关键字。对于同时具有数据和函数的对象使用class关键字。