草庐IT

c++ - 具有类内初始化的默认默认构造函数的行为是什么?

假设如下:classfoo{public:foo()=default;private:std::stringm_str="Hello";};我无法在cppreference.com或C++11草案上找到任何说明默认构造函数将在此处对m_str执行的操作的文档。我的自然假设是编译器足够聪明,如果它已经在类中初始化,则不会在默认构造函数中初始化m_str,但也许我错了。谁能解释这里的初始化行为?有任何保证还是未指定? 最佳答案 这是在[class.ctor]/5中明确定义和指定的:[...]Theimplicitly-definedde

指向成员的指针的 C++ 类内初始化使 MSVC 失败(但 GCC/Clang 工作)

这是一个非常简单的C++代码:#includestructA{inta;constexprstaticintA::*p=&A::a;virtualvoidf(){}};intmain(){Ax;x.a=0;x.*(A::p)=1234;std::cout更令人震惊的是,这段代码在GCC、Clang和MSVC之间显示了不同的结果。我试过4个编译器GCC:编译良好,打印1234。Clang:编译良好,打印1234。MSVC(在线):编译失败。带有VisualStudio2019的MSVC(本地):编译良好,打印0。(有趣的是,如果我删除f(),它会打印1234。)我不确定用它自己的成员对指

c++ - 为什么我不能使类内初始化 `const const std::string` 成为静态成员

我有以下工作代码:#include#includeclassA{public:conststd::stringtest="42";//staticconststd::stringtest="42";//fails};intmain(void){Aa;std::cout为什么不能使测试成为staticconst有充分的理由吗?我确实了解在c++11之前它受到标准的约束。我认为c++11引入了类内初始化以使其更友好一些。很长一段时间以来,我也没有这样的语义可用于整数类型。当然,它适用于conststd::stringA::test="42";形式的类外初始化我猜想,如果您可以使它成为非静态

c++ - 我可以用静态的、constexpr、类内初始化的数据成员做什么?

这可能是一个有点不寻常的问题,因为它要求对anotherquestion的简短回答进行更全面的解释。以及与之相关的C++11标准的某些方面。为了便于引用,我将在这里总结所引用的问题。OP定义了一个类:structAccount{staticconstexprintperiod=30;voidfoo(constint&){}voidbar(){foo(period);}//noerror?};并且想知道为什么他在使用类内初始化静态数据成员时没有出错(一本书提到这是非法的)。JohannesSchaub的回答指出:这违反了一个定义规则;不需要诊断。尽管我非常依赖这个答案的来源和有效性,但老

c++ - C++1y 中是否需要公共(public)类内类型定义?

我注意到std::容器往往有public,类内类型别名(typedef/using)。例如,参见http://en.cppreference.com/w/cpp/container/vector中的成员类型.它们有什么用?难道它们只是C++没有auto和decltype之类的东西的时代遗留物吗?当实现自定义容器时,它应该有这样的typedef吗?如果我不提供它们,我会失去什么? 最佳答案 如果你想要一个标准库兼容的容器,你必须提供typedef。如果您查看文档,例如在cppreference,你会看到这样的段落:std::vecto

c++ - qt类内的服务器线程(需要互斥体吗?)

我制作了这个服务器类,它在新连接进入时启动了一个线程。在某些情况下,它可以正常工作,但不是很稳定。我正在尝试解决问题。我的调试器告诉我有关qmutex的信息。如果有人可以发现问题。ty它通过信号和插槽与父节点连接,并且还可以获取数据。这是标题:#ifndefFORTUNESERVER_H#defineFORTUNESERVER_H#include#include#include#include#includeusingnamespacestd;classFortuneServer:publicQTcpServer{Q_OBJECTpublic:FortuneServer(QObject

swift - 类内的变异函数

考虑Swift中的这个类:classZombie:Monster{varwalksWithLimp=truefinaloverridefuncterrorizeTown(){town?.changePopulation(-10)super.terrorizeTown()}funcchangeName(name:String,walksWithLimp:Bool){self.name=nameself.walksWithLimp=walksWithLimp}}Zombie继承了Monster类的name字段。varname="Monster"为什么fredTheZombie.change

类内的 Python 递归

这个问题在这里已经有了答案:Pythonnotdefinedrecursivefunction?(1个回答)关闭上个月。今天刚学python,天真地想着写个递归的代码。那么我们如何在python中实现以下呢?classmine:definclass(self):self=mine();defrecur(num):print(num,end="")ifnum>1:print("*",end="")returnnum*self.recur(num-1)print("=")return1defmain():a=mine()print(mine.recur(10))main()我试图给自己下定

python - Python 模块中的类内相关性?

我要计算intraclasscorrelation(ICC)在Python中。我一直无法找到具有此功能的现有模块。有替代名称吗,还是我应该自己做?我知道有人问过这个问题ayearago在另一个用户的交叉验证上,但没有回复。我正在寻找比较两个评分者之间的连续分数。 最佳答案 ICC有多种实现方式在R.这些可以通过rpy2从Python使用包裹。示例:fromrpy2.robjectsimportDataFrame,FloatVector,IntVectorfromrpy2.robjects.packagesimportimportrf

类内嵌套函数内的 Python 作用域?

如何从一个函数内部设置一个类变量到另一个函数中?变量.pyclassA:def__init__(self):self.a=1self.b=2self.c=3defseta(self):defafunction():self.a=4afunction()defgeta(self):returnself.a运行.pycA=A()printcA.acA.seta()printcA.aprintcA.geta()python运行.py111为什么a不等于4,我怎样才能使它等于4?编辑:谢谢大家-抱歉,我现在才看到。我不小心被我名字中的一个_误导了……所以我的范围实际上没问题。