草庐IT

Initialization

全部标签

c++ - 私有(private)静态声明和后续初始化

一个.cpp文件有一堆类定义。一个类有一个私有(private)静态成员,如下所示:classSomeClass:publicSomeParentClass{private:staticintcount;};并且在类定义之后,计数属性初始化为零,如下所示:intSomeClass::count=0;来自Java/C#世界,我无法理解count在哪一点初始化为零?是在SomeClass被实例化的时候吗?此外,类定义的count类型为int,为什么SomeClass::count必须有一个int前面呢?我的最后一个问题是,既然count属性是私有(private)的,当它在类定义之外初始化

c++ - 为什么 ISO C++ 标准禁止对成员进行初始化?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。为什么我做不到classA{public:intx=10;...};我必须这样做吗?classA{public:intx;A(){x=10;...}...};这是因为C++试图比C这样的语言更加类型安全?还有其他原因吗?

c++ - 初始化结构包含对结构的引用

是否可以有一个结构包含对结构的引用。这些是如何初始化的?请参阅下面的简短示例。谢谢typedefstruct{inta;}typeInner1;typedefstruct{intb;}typeInner2;typedefstruct{typeInner1&one;typeInner2&two;}typeOuter;voidfun2(typeOuter*p){p->one.a=2;p->two.b=3;}voidfun(typeInner1&arg1,typeInner2&arg2){typeOuter*ptr=newtypeOuter;//好的,感谢所有的输入。我还必须修改typeOu

C++ vector 初始化

#include...//insidemainfunctionvectorvi3={42,42,42,42,42,42,42,42,42,42};我正在学习C++,我认为可以像这样初始化一个vector……我做错了什么吗?我知道初始化vector的其他方法。在我正在阅读的书中,它说也可以这样做:vectorvi3{42,42,42,42,42,42,42,42,42,42};这是书中第一个让我出错的地方。我做错了什么? 最佳答案 不清楚您使用的是哪个编译器,但2013预览版之前的MicrosoftVisualStudio版本不支持统

c++ - 初始化字符串时额外的大括号

根据问题Whatdoesstringarray[]="";meanandwhydoesitwork?我想问一下下面代码中s1和s2有什么区别:intmain(){constchar*s1={"Hello"};//strangebutworkasfollowedconstchar*s2="Hello";//ordinarycasereturn0;}为什么允许额外的大括号?任何对C++标准的引用都会很有用。 最佳答案 在C++98(和C++03)中这很简单;在第8.5条中:14-IfTisascalartype,thenadeclara

c++ - 静态局部变量中的竞争条件

我目前正在阅读EffectiveC++。有一个关于使用静态局部变量的部分,它说如果多个线程访问一个静态变量,则在该变量的初始化期间可能会出现竞争条件。至少这是我的解释。这是真的?例如,在C#中,类静态变量的初始化永远不会出现竞争条件。例如,此代码在静态变量初始化期间是否存在竞争条件?FileSystem&tfs(){staticFileSystemfs;returnfs;}以下是书中的异常(exception)情况。Here'sthetechniqueappliedtobothtfsandtempDir:classFileSystem{...};//asbeforeFileSystem

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

您好,在此先感谢您对以下问题的任何帮助。编辑:我忘了补充一点,这是在无法访问STL功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用C++进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!我正在尝试初始化结构的数组成员,该结构又是C++类的公共(public)成员。结构中省略了数组大小。这是一个例子://ClassA.hClassA{public:structStructA{StructBstructs[];};structStructB{//stuff};ClassA();//etc};//Class

c++ - 如何(重新)调用初始化对象的构造函数?

我正在编写一些代码来检查是否插入了特定的MIDI设备,如果未插入,则代码每5秒重新检查一次,直到插入。我的问题出现在检查设备列表时——外部库没有重新检查端口的功能,因为它只在类的构造函数中执行。我认为让我的代码重新检查设备列表的唯一方法是重新初始化类对象。类对象在头文件中声明为ofxMidiInmidiIn;,因为它在cpp文件中全局使用。问题是,如果我在cpp的一个函数内“重新声明”,它似乎不会替换全局范围内的对象,即使它在本地是好的。用伪代码来说明:在.h中:classfoo{ofxMidiInmidiIn;//firstinitializationdoesaportscan};在

C++ 构造函数调用和对象创建

classTest{public:intx;Test(){x=0;cout输出:程序编译输出constructorwithsingleintargumentcalledconstructorwithsingleintargumentcalled但是现在classTest{public:intx;Test(){x=0;cout编译失败。constructorinvokings.cc:36:7:error:noviableconstructorcopyingvariableoftype'Test'Testaa=10;^~~constructorinvokings.cc:23:3:note:

C++构造函数理解

考虑这个构造函数:Packet():bits_(0),datalen_(0),next_(0){}注意bits_、datalen_和next_是Packet类中的字段,定义如下:u_char*bits_;u_intdatalen_;Packet*next_;构造函数的这部分是什么意思?bits_(0)、datalen_(0)、next_(0) 最佳答案 这是一个初始化列表,它将值设置为指定的值。Packet():bits_(0),datalen_(0),next_(0){assert(bits_==0);assert(datalen