constructor相关内容

传递“这个”从一个构造函数内的函数?

我可以从类构造函数中将“this”作为指针传递给函数,并在构造函数返回之前使用它指向对象的成员? 是否可以安全地执行此操作,只要访问的成员在函数调用之前正确初始化? 例如: #include class Stuff { public: static void print_number(void * param) { std :: cou ..
发布时间:2016-10-23 13:36:23 C/C++开发

为什么类的常量数据成员需要在构造函数中初始化?

我想知道为什么类的常量数据成员需要在构造函数初始化,为什么不在别的地方? 我也看到只有 静态常数积分数据 例如: - 假设下面是我的类声明 / em> class A { int a; //这个我们可以在构造函数初始化,或者我们可以通过调用“vSet”成员函数 设置这个成员const int b; static const int c = 10; // this work ..
发布时间:2016-10-23 12:49:35 C/C++开发

在什么条件下我应该考虑实现移动构造函数和移动运算符?

对于标准复制构造函数和赋值运算符,如果我的类实现了析构函数,我总是考虑实现它们或 delete 对于新的移动构造函数和移动运算符,正确的方式是考虑是否需要实现? 作为从pre-C ++ 0x转换系统的第一步,我可以只是 delete 移动构造函数和移动运算符或应该将它们单独放置。 解决方案 您不会担心,因为当您用户声明一个析构函数(或12.8 / 9中列出的其他任何东西),阻止 ..
发布时间:2016-10-23 12:19:05 C/C++开发

当委托构造函数抛出时,析构函数是否被调用?

众所周知,如果构造函数throws,那么所有完全构造的子对象将以相反的顺序被销毁,包括成员数据和所有类型的基类。析构函数不会为非委托构造函数调用。对于委托构造函数,当构造函数体被输入时,对象已经被构造,但构造继续一些。因此,问题出现的是类的析构函数是否被调用,如果委托构造函数在其体内抛出异常? class X { public: X X(int):X(){throw std : ..
发布时间:2016-10-23 11:30:42 C/C++开发

当构造函数抛出异常时,RAII如何工作?

我正在学习C ++中的RAII成语,以及如何使用智能指针。 在我看来,我遇到了两件事, 引用自 http://www.hackcraft。 net / raii / : ...如果已创建具有RAII语义的成员对象,构造函数已经完成,那么它的析构函数将被称为堆栈展开的一部分。因此,控制多个资源的对象可以通过使用成员RAII对象来完成它们的清理,即使它不是完全构建的。 但引用自 ..
发布时间:2016-10-23 11:23:00 C/C++开发

构造函数不能是虚拟的

在其中一个互联网C ++教程中,我发现了以下关于为什么构造函数不能是虚拟的 我们不能声明一个虚拟构造函数。我们应该在编译时指定对象的确切 类型,以便编译器可以为该特定类型分配 内存。 这个描述是否正确? 特别是对于,我会感到困惑,因此编译器可以分配$ b $ “http://www2.research.att.com/~bs/bs_faq2.html#virtualceptc ..
发布时间:2016-10-22 19:58:04 C/C++开发

带和不带构造函数调用的区别()

我是一个C ++初学者,想了解为什么 return std :: list(); 需要括号,但 std :: list foo; 不需要括号。这些构造函数调用之间有什么区别? 解决方案 这些都不是构造函数调用。 第一种是显式类型转换,它创建一个对象 std :: list 。 第二 ..
发布时间:2016-10-22 19:02:46 C/C++开发

如何在C ++中写一个简单的类?

我一直在阅读很多关于C ++类的教程,但他们错过了其他教程包括的内容。 有人可以告诉我如何写和使用一个非常简单的C ++类使用可见性,方法和一个简单的构造函数和析构函数? 解决方案 href =“http://www.java-samples.com/showtutorial.php?tutorialid=313”> C ++中的构造函数和析构函数: #include ..
发布时间:2016-10-22 19:02:16 C/C++开发

c ++中初始化程序和默认初始化程序列表之间的差异

HI, 我有一个问题,但找不到很长时间的答案,也就是 下面的2个语句有关参数 初始化有什么区别? class A :: A() :a(0),b(0) { } class A :: A() { a = 0 b = 0; c = 0; } 我知道有“直接初始化”和“复制初始化” 不知道什么是其他差异,如果有任何描述 关于第一个语句? 提前 ..
发布时间:2016-10-22 18:46:22 C/C++开发

Destructor在将对象添加到std :: list时调用它

我有一个Foo对象,和一个std ::列举它的实例。我的问题是,当我添加一个新的实例到列表,它首先调用ctor,但也调用dtor。然后在另一个实例上的dtor(根据this指针)。 单个实例被添加到列表,但是因为它的dtor 需要一些简化的代码来说明问题: #include #include class Foo { publ ..
发布时间:2016-10-22 18:41:14 C/C++开发

C ++中的默认与隐式构造函数

这是非常微不足道的,但捷克语(我的本地)不区分隐含和默认,所以我感到困惑的一些捷克翻译隐含和默认构造函数或构造函数调用之间的区别。 struct Test { Test(int n = 0){} };你可以用这些术语描述: 测试t1; 测试t2(); 测试t3 = 3; 测试t4(4); 测试t5 =测试(5); $ b b ..
发布时间:2016-10-22 18:36:18 C/C++开发

为什么内联构造函数和析构函数在C ++中不是一个好主意?

我记得在一本C ++的书中(很久以前)读到,内联的构造函数和析构函数,特别是对于派生类是不是一个好主意。 我知道内联会导致一些膨胀的目标代码,但有任何其他设计考虑,阻止内联构造函数和析构函数?当然大多数编译器可以拒绝内联并继续创建一个函数体,但是如果他们内联了什么惩罚可能需要支付? 解决方案 编译器可以自由的内联代码,你没有声明内联,并且是免费的内联代码,你已经声明内联。我看到编译器做这 ..
发布时间:2016-10-22 18:33:28 C/C++开发