ctor-initializer相关内容
为什么会这样: #include #include 使用命名空间标准;沙盒类{上市:沙盒(常量字符串& n):成员(n){}常量字符串&成员;};主函数(){沙盒 sandbox(string("four"));cout 给出输出: 答案是: 代替: 答案是:四个 解决方案 只有 local const 引用才能延长寿命.
..
我想了解使用一种形式而不是另一种形式(如果有的话)的区别. 代码1(直接在变量上初始化): #include 使用命名空间标准;类测试{上市:测试() {cout 代码 2(在构造函数上初始化列表): #include 使用命名空间标准;类测试{上市:测试():计数(10){cout 语义上有什么区别,还是只是句法上的区别? 解决方案
..
因此,C++ 标准要求类成员按照它们在类中声明的顺序进行初始化,而不是按照它们在任何构造函数的初始化列表中的顺序进行初始化.但是,这并不意味着评估这些初始化的参数的顺序.我正在使用一个经常传递对序列化对象的引用的系统,并且想知道我是否可以确保以正确的顺序从中读取位,而与这些位写入对象字段的顺序无关. struct Foo {诠释一个;双乙;//我希望能够做到这一点Foo(SerObj &s):
..
因此,C++ 标准要求类成员按照它们在类中声明的顺序进行初始化,而不是按照它们在任何构造函数的初始化列表中提到的顺序进行初始化.但是,这并不意味着对这些初始化的参数进行评估的顺序有任何关系.我正在使用一个经常传递对序列化对象的引用的系统,我想知道是否可以确保以正确的顺序从中读取位,而与这些位写入对象字段的顺序无关. struct Foo {一个;双 b;//我希望能够做到这一点Foo(SerOb
..
我仍在学习 C++ 并试图理解它.我正在查看一些代码并看到: point3(float X, float Y, float Z) :x(X), y(Y), z(Z)//
..
想象一下,我有一个 C++ 类 Foo 和一个类 Bar,它们必须用一个构造函数来创建,在该构造函数中传递了一个 Foo 指针,并且这个指针在 Bar 实例生命周期中保持不变.正确的做法是什么? 事实上,我以为我可以像下面的代码那样写,但它不能编译.. class Foo;类栏{上市:foo * const foo;酒吧(富*富){这-> foo = foo;}};类 Foo {上市:一个
..
冒号操作符(“:")在这个构造函数中有什么作用?是否等价于MyClass(m_classID = -1, m_userdata = 0);? class MyClass {上市:MyClass() : m_classID(-1), m_userdata(0) {}int m_classID;无效 *m_userdata;}; 解决方案 这是一个初始化列表,是构造函数实现的一部分. 构造
..
为什么会这样: #include #include 使用命名空间标准;类沙盒{民众:沙盒(const string& n):成员(n){}const string&成员;};int main(){沙箱沙箱(字符串(“四"));cout
..
最近我看到了一个像下面这样的例子: #include 类 Foo {民众:国际酒吧;Foo(int num): bar(num) {};};int main(void) {std::cout
..
在 OS X 上使用 Xcode 5.1 编译以下代码时出现意外错误.Apple LLVM 5.1 版 (clang-503.0.40)(基于 LLVM 3.4svn) class GrandParent{民众:祖父母(整数年龄):m_age(年龄){}虚拟 ~GrandParent() {}私人的:祖父母();GrandParent(const GrandParent&);const Gran
..
我的理解,例如阅读这,是派生类的构造函数不会调用其虚拟基类的构造函数. 这是我做的一个简单示例: A类{受保护的:A(int foo){}};B类:公共虚拟A {受保护的:B(){}};C类:公共虚拟A {受保护的:C() {}};D类:公共B,公共C {上市:D(int foo,int bar):A(foo){}};int main(){返回0;} 出于某种原因,构造函数 B ::
..
我正在为我正在开发的C ++应用程序编写一小段异常类层次结构,并且在从 std :: runtime_error 间接派生时遇到了麻烦.这是类似于我到目前为止编写的代码: class RuntimeException:公共虚拟boost :: exception,公共虚拟std :: runtime_error {上市:虚拟〜RuntimeException(){}RuntimeExcepti
..
考虑以下代码: #include using namespace std; class A { public: A() {cout
..
我想了解WHY C ++标准的要求,即虚拟基础非默认构造函数不能由非最衍生的中间层调用 此类代码中的类,当使用'-D_WITH_BUG_'编译时: /* A virtual base's non-default constructor is NOT called UNLESS * the MOST DERIVED class explicitly invokes it */ #i
..
为什么这样做: #include #include using namespace std; class Sandbox { public: Sandbox(const string& n) : member(n) {} const string& member; }; int main() { Sandbox sandbo
..
从构造函数初始值设定项引发异常的最佳方法是什么? 例如: Class C { T0 t0; //可以是有效或无效,但不会直接抛出 T1 t1; //重对象,如果t0无效,则不要构造,方法是在 之前抛出C(int n) :t0(n),//如果t0(n)无效,则抛出异常 t1(){} }; 我想也许可以做包装纸,例如 t0(throw_if_invalid(n)
..
最近我看到一个像下面的例子: #include class Foo { public: int bar; Foo(int num):bar(num){}; }; int main(void){ std :: cout
..
可能的重复项: C ++奇怪的构造函数语法 构造函数中的冒号后的变量 在C ++构造函数名后面有冒号(:)是什么? 对于下面的C ++函数: cross(vector& L_,vector& backref_ ,向量& res_): L(L_),c(L.size(),0),res(res_),backref(backref_)
..
这个行为是否明确定义? class Foo { int A,B; public: Foo(int Bar):B(Bar),A(B + 123) { } } ; int main() { Foo MyFoo(0); return 0; } 解决方案 A 将首先被初始化(它是类定义中的第一个),并且它使用未初始化的 B 。
..
我在调试生产中的崩溃时很难。只是想与这里的人们确认语义。我们有一个类... ... class Test { public: Test() { //成员初始化... m_str = m_str; } 〜Test(){} private: //其它成员... std :: string m_str; }; 有人更改了初始化以使用ctor初始化列表
..