我想初始化一个struct元素,在声明和初始化中拆分.这就是我所拥有的:
typedef struct MY_TYPE {
bool flag;
short int value;
double stuff;
} MY_TYPE;
void function(void) {
MY_TYPE a;
...
a = { true, 15, 0.123 }
}
Run Code Online (Sandbox Code Playgroud)
这是MY_TYPE根据C编程语言标准(C89,C90,C99,C11等)声明和初始化局部变量的方法吗?或者有什么更好或至少工作?
更新我最终得到一个静态初始化元素,我根据自己的需要设置每个子元素.
这个问题已在C#/ .Net的背景下提出.
现在我想学习C++中结构和类之间的区别.请讨论技术差异以及在OO设计中选择其中一个的原因.
我将从一个明显的区别开始:
public:or private:,则结构的成员默认是公共的; 默认情况下,类的成员是私有的.我确信在C++规范的模糊角落中还有其他差异.
我有一个结构,我创建一个自定义构造函数来将成员初始化为0.我在较旧的编译器中看到,当处于释放模式时,如果没有将memset设置为0,则不会初始化值.
我现在想在union中使用这个结构,但是因为它有一个非平凡的构造函数而得到错误.
那么,问题1.默认编译器实现的构造函数是否保证结构的所有成员都将为null初始化?非平凡的构造函数只是将所有成员的memset设置为'0'以确保结构清晰.
问题2:如果必须在基础结构上指定构造函数,如何实现联合以包含该元素并确保0初始化的基本元素?
假设我有一个看起来像这样的结构(一个POD):
struct Foo
{
int i;
double d;
};
Run Code Online (Sandbox Code Playgroud)
以下两行之间有什么区别:
Foo* f1 = new Foo;
Foo* f2 = new Foo();
Run Code Online (Sandbox Code Playgroud) 关于C++结构的一个简单问题,我还没有找到答案:
我读过结构和类之间的唯一区别是成员可见性.那么,编译器是否为结构提供了默认构造函数?(还有一个默认的copyconstructor,析构函数和赋值运算符?)你能自己定义以上所有内容吗?
谢谢,István
好吧,我正在编写带有struct [在C++中]的代码,我不确定是在头文件还是源文件中实现struct.
该struct包含一个构造函数:
struct Point
{
double x;
double y;
Point(double xCo, double yCo)
{
this->x = xCo;
this->y = yCo;
}
int comparePoint(Point point)
{
...
}
};
Run Code Online (Sandbox Code Playgroud)
我在头文件中写道:
typedef struct Point point;
Run Code Online (Sandbox Code Playgroud)
它足够好,还是一个糟糕的设计?正如我在一些网站上看到的那样,结构通常在头文件中实现,
但在之前的作业中,我[在C]课程的工作人员为我们提供了一个头文件,其中包括对结构的声明而不是实现.
我在这里看到了与此类似的其他问题,但他们并没有真正回答我的问题.
我有一个struct,player,如下:
struct player {
string name;
int rating;
};
Run Code Online (Sandbox Code Playgroud)
我想修改它,以便我用两个参数声明结构:
player(string, int)
Run Code Online (Sandbox Code Playgroud)
它为结构的内容分配这些值.
C++ struct是否也像类一样调用构造函数(默认,复制构造函数)和析构函数,或者它们遵循结构的C语言指南?所以在下面的例子中,是一个名为的默认构造函数?
Foo structObject; \\Foo is a struct
Run Code Online (Sandbox Code Playgroud) 我读到类和结构之间的主要区别在于类是引用类型而结构是值类型.任何人都可以解释我的价值类型和参考类型意味着什么 ......?