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

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


当前回答

类、结构和联合在下表中简要描述。

其他回答

是的。结构就像一个类,但在类定义和继承时默认为public::

struct Foo
{
    int bar;

    Foo(void) :
    bar(0)
    {
    }
}

考虑到你的另一个问题,我建议你阅读一些教程。他们会比我们更快更全面地回答你的问题。

类、结构和联合在下表中简要描述。

是的,但是如果你在工会中有你的结构,那么你就不能。它和类是一样的。

struct Example
{
   unsigned int mTest;
   Example()
   {
   }
};

工会将不允许在结构中使用构造函数。你可以在联合上创建一个构造函数。这个问题与联合中的非平凡构造函数有关。

正如其他答案所提到的,在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);

是的,在结构中有构造函数是可能的,这里有一个例子:

#include<iostream.h> 
struct a {
  int x;
  a(){x=100;}
};

int main() {
  struct a a1;
  getch();
}