在c++中,结构可以有构造函数吗?
我一直试图解决这个问题,但我没有得到语法。
在c++中,结构可以有构造函数吗?
我一直试图解决这个问题,但我没有得到语法。
当前回答
是的。结构就像一个类,但在类定义和继承时默认为public::
struct Foo
{
int bar;
Foo(void) :
bar(0)
{
}
}
考虑到你的另一个问题,我建议你阅读一些教程。他们会比我们更快更全面地回答你的问题。
其他回答
是的,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++中,类和结构之间的唯一区别是,成员和基类在类中默认是私有的,而在结构中默认是公共的。
struct可以有构造函数,语法和类一样。
是的,但是如果你在工会中有你的结构,那么你就不能。它和类是一样的。
struct Example
{
unsigned int mTest;
Example()
{
}
};
工会将不允许在结构中使用构造函数。你可以在联合上创建一个构造函数。这个问题与联合中的非平凡构造函数有关。
是的。结构就像一个类,但在类定义和继承时默认为public::
struct Foo
{
int bar;
Foo(void) :
bar(0)
{
}
}
考虑到你的另一个问题,我建议你阅读一些教程。他们会比我们更快更全面地回答你的问题。