constructor相关内容

C ++在构造函数中使用此指针

在 C ++ 中,在类构造函数中,我开始使用这个指针作为参数的一个新线程在线程中广泛使用(比如说,调用成员函数)。这是坏事吗?为什么和后果是什么? 我的线程启动过程在构造函数的结尾。 解决方案 结果是线程可以启动,代码将开始执行一个尚未完全初始化的对象。这本身就不够好。 如果你正在考虑这个问题,那么它将是构造函数中的最后一个句子,它将会被创建为...“您可能从该类派生,并且不会 ..
发布时间:2016-10-14 12:45:28 C/C++开发

默认复制构造函数

可以为已经是用户定义的构造函数但不是复制构造函数的类调用默认(隐式)复制构造函数。如果可能的话,假设我们为类定义了显式的复制构造函数,现在可以调用默认(隐式)构造函数。 解决方案首先,让我们澄清一下我们的词汇。默认构造函数是一个 构造函数,可以在没有任何参数的情况下调用。复制 构造函数是一个构造函数,它可以用同一类型的单个参数 调用。鉴于此,“默认复制构造函数”是一个 构造函数,其签 ..
发布时间:2016-10-14 12:32:10 C/C++开发

是否将默认Move构造函数定义为noexcept?

似乎向量将检查移动构造函数是否标记为noexcept,然后再决定是否在重新分配时移动或复制元素。是默认移动构造函数定义为noexcept?我看到以下文档,但没有指定这一点。 http://en.cppreference.com/w/cpp / language / move_constructor 隐式移动构造函数 如果没有为类类型(struct,class或union)提供用户定义的 ..
发布时间:2016-10-14 12:22:52 C/C++开发

引用作为类成员初始化

我想通过将这样的引用作为参数传递给构造函数来初始化一个类的属性,该类拥有对另一个类的引用。但是我收到一个错误: “'TaxSquare :: bank'必须在构造函数库/成员初始化列表中初始化。 下面的类的代码有什么问题? #ifndef TAXSQUARE_H #define TAXSQUARE_H #include“Square.h” class银行; c ..
发布时间:2016-10-14 12:17:39 C/C++开发

C ++构造函数:为什么这个虚函数调用不安全?

这是从C ++ 11标准sec 12.7.4。 正文中最后一句是什么意思? 是 B :: B 未定义的最后一个方法调用? Shoudn't它只是调用 a.A :: f ? 4在构建期间,成员函数,包括虚函数(10.3)或破坏(12.6.2)。当虚拟函数 直接或间接从构造函数或 析构函数调用时,包括在构建或销毁 类的非静态数据成员期间,调用 apply是对象(调用它x)正在构造 ..
发布时间:2016-10-14 12:17:14 C/C++开发

复制构造函数和默认构造函数

当我们为类定义一个复制构造函数时,我们必须显式地定义一个默认的构造函数。请说明理由。 例如: A类 { int i; public: A(A& a) { i = a.i; //确定这是正确的.... } A(){} //如果我们写上面的复制构造函数,这是必需的 }; 此外,如果我们为除复制构造函数之外的类定义任何其他参数化构造函数,必须定 ..
发布时间:2016-10-14 12:17:08 C/C++开发

C ++默认析构函数

例如,当我不声明一个构造函数时,编译器将为我提供一个默认构造函数将没有参数和定义(body),因此将采取无操作。 如果我现在不声明一个 destructor ,编译器将为我提供一个没有定义(body)的默认析构函数,因此,我认为 因此,如果我完成了一个对象,例如,默认析构函数 code>重新分配(空闲)对象使用的内存? 也许同样的问题适用于默认构造函数。如果没有,为什么默认为我们 ..
发布时间:2016-10-14 12:12:39 C/C++开发

当从函数返回对象时,调用C ++中的复制构造函数?

在实例化一个对象并使用另一个对象的值初始化它时,我会理解副本构造函数。 按值传递对象时。 3。 我的问题是no.3 如果复制构造函数在一个对象的值被调用时 我的意思是拷贝构造函数是一个深拷贝的,并且引用一个对象作为参数 解决方案 它的调用是为了避免出现问题。作为结果的新对象从本地定义的对象初始化,然后本地定义的对象被销毁。 如果是深层复制用户定义的构造函数,一样 ..
发布时间:2016-10-14 12:08:45 C/C++开发

为什么结构中的POD在创建堆中的对象或堆栈中的临时对象时由隐式构造函数初始化?

标准和 C ++书说,类类型成员的默认构造函数由隐式生成的默认构造函数调用,但内置类型不会初始化。但是,在这个测试程序中,当在堆中分配对象或使用临时对象时,会得到意外的结果: #include< ; iostream> struct Container { int n; }; int main() { Container c; std :: cout ..

为什么在C ++中显式调用构造函数

我知道我们可以使用范围解析操作符,即 className :: className()显式调用C ++中的类的构造函数。 解决方案 最常见的是,在一个子类构造函数中需要一些参数: class BaseClass { public: BaseClass(const std :: string& ; name):m_name(name){} const std :: s ..
发布时间:2016-10-14 11:56:19 C/C++开发

受保护的构造函数的实际用途是什么?

为什么会声明一个构造函数受保护?我知道构造函数被声明为私有的,目的是不允许在堆栈上创建它们。 解决方案 )一个抽象类,一个受保护的构造函数是完全正确的。在这种情况下,你不希望对象从类中实例化,而只是使用它继承。 还有其他用例,如当一组施工参数应限于派生类。 ..
发布时间:2016-10-14 11:42:56 C/C++开发