我们的代码涉及一个POD(Plain Old Datastructure)结构(它是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时进行初始化.)
根据我所读到的,似乎:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
Run Code Online (Sandbox Code Playgroud)
应该将所有值初始化为零,如下所示:
myStruct = new MyStruct();
Run Code Online (Sandbox Code Playgroud)
但是,当以第二种方式初始化结构时,Valgrind后来抱怨"当使用这些变量时,条件跳转或移动取决于未初始化的值".我的理解是否存在缺陷,或者Valgrind是否会误报?
嗨,
在C++ In a Nutshell一书中,在第6章:类中,在Access说明符下面,提到了以下内容:
在类定义中,成员和基类的默认访问权限是私有的.在结构定义中,默认值为public.这是类和结构之间的唯一区别,尽管按照惯例,一些程序员仅将结构用于POD类,并将类用于所有其他类.
我的问题是:
谢谢.
可能重复:
C++中struct和class之间有什么区别
如果结构和类之间的唯一区别是默认访问说明符(在C++中),那么为什么C++也有类?
我正在浏览其他人的代码并遇到以下语法:
typedef struct abc {
abc() : member(0){}
unsigned int member
}
Run Code Online (Sandbox Code Playgroud)
它似乎是一个带有成员变量和构造函数的类,除了它被声明为struct.我这里有两个问题.
非常感谢提前.
PS:我如何格式化代码?
我开始使用 C++ 中的数据结构,在阅读时,我想到了以下代码段,
template <class Node_entry>
struct Node {
// data members
Node_entry entry;
Node<Node_entry> *next;
// constructors
Node( );
Node(Node_entry, Node<Node_entry> *link = NULL);
};
Run Code Online (Sandbox Code Playgroud)
任何人都可以详细说明为什么作者选择结构而不是类来实现singly linked list? 谢谢。
喜欢printf?
但我记得C++确实用函数名和参数类型命名,
这可以推断出C++不支持可变长度参数......
我只是想确定,是这样的吗?
UPDATE
讨论应排除包括在内的那些 extern "C"
我最近在一次采访中遇到了一个问题。
C++ 结构体和类在内存方面有什么区别?
我知道它们在所有方面都是相同的,除了继承时的访问说明符&在成员变量的情况下。
除此之外,内存方面是否存在真正的差异(可能是内存分配或销毁或内存管理等)???
编辑:我不太确定为什么面试官在没有区别的情况下问这个问题。我在这里发现了类似的问题 ,请参阅该链接的第二条评论,他问了同样的问题,但没有答案。我想应该是有区别的。
提前致谢。
换句话说,在旧时代,当谈到C age时,struct没有构造函数,析构函数等.但是,现在(C++时代),struct已经扩展得更像类了.
那么,C++设计者的目的是什么?
详细地说,为什么在与c相比时将构造函数,析构函数,继承,成员函数添加到struct中?
这对于C/C++ Struct vs Class来说不是一个重复的问题,因为这里的主要观点在于设计目的,而不是结构和类之间的区别.
它也不重复为什么C++中都存在struct和class?,我没有看到在上述问题下扩展struct的目的.