constructor相关内容
我可以从类构造函数中将“this”作为指针传递给函数,并在构造函数返回之前使用它指向对象的成员? 是否可以安全地执行此操作,只要访问的成员在函数调用之前正确初始化? 例如: #include class Stuff { public: static void print_number(void * param) { std :: cou
..
我想知道为什么类的常量数据成员需要在构造函数初始化,为什么不在别的地方? 我也看到只有 静态常数积分数据 例如: - 假设下面是我的类声明 / em> class A { int a; //这个我们可以在构造函数初始化,或者我们可以通过调用“vSet”成员函数 设置这个成员const int b; static const int c = 10; // this work
..
请考虑以下示例代码: #include bar(); // Line2 base * bptr = this; bptr-> bar(); // Line3 ((base *)(t
..
对于标准复制构造函数和赋值运算符,如果我的类实现了析构函数,我总是考虑实现它们或 delete 对于新的移动构造函数和移动运算符,正确的方式是考虑是否需要实现? 作为从pre-C ++ 0x转换系统的第一步,我可以只是 delete 移动构造函数和移动运算符或应该将它们单独放置。 解决方案 您不会担心,因为当您用户声明一个析构函数(或12.8 / 9中列出的其他任何东西),阻止
..
创建一个类的实例后,我们可以显式调用构造函数吗? 例如 class A { A(int a) { } } A实例; instance.A(2);我们可以这样做吗? 解决方案 您可以使用新刊登位置: http://en.wikipedia.org/wiki/Placement_new允许 new(& instance)A(2);但是,从你的例子中
..
class A { public: A(){throw string(“exception A”); }; }; class B { A a; public: B()try:a(){} catch(string& s){cout
..
众所周知,如果构造函数throws,那么所有完全构造的子对象将以相反的顺序被销毁,包括成员数据和所有类型的基类。析构函数不会为非委托构造函数调用。对于委托构造函数,当构造函数体被输入时,对象已经被构造,但构造继续一些。因此,问题出现的是类的析构函数是否被调用,如果委托构造函数在其体内抛出异常? class X { public: X X(int):X(){throw std :
..
我正在学习C ++中的RAII成语,以及如何使用智能指针。 在我看来,我遇到了两件事, 引用自 http://www.hackcraft。 net / raii / : ...如果已创建具有RAII语义的成员对象,构造函数已经完成,那么它的析构函数将被称为堆栈展开的一部分。因此,控制多个资源的对象可以通过使用成员RAII对象来完成它们的清理,即使它不是完全构建的。 但引用自
..
我的直觉是不是。我处于以下情况: class PluginLoader { public: Builder * const p_Builder; Logger * const p_Logger; //其他 }; PluginLoader :: PluginLoader(Builder * const pBuilder) :p_Builder(pBuilder),
..
在其中一个互联网C ++教程中,我发现了以下关于为什么构造函数不能是虚拟的 我们不能声明一个虚拟构造函数。我们应该在编译时指定对象的确切 类型,以便编译器可以为该特定类型分配 内存。 这个描述是否正确? 特别是对于,我会感到困惑,因此编译器可以分配$ b $ “http://www2.research.att.com/~bs/bs_faq2.html#virtualceptc
..
GCC 4.8.1接受 模板 { public: 使用typename Baseclass :: Baseclass; }; 但MSVC没有。另一方面,MSVC接受 template class Subclass:pu
..
考虑两个类 A 和 B class A { public: A(int); 〜A(); }; class B:public A { public: B(int); 〜B(); }; int main() { A * aobj; B * bobj = new bobj(5); } 现在类 B inherits A 。
..
class A { public: A()= default; A(const A&)= delete; }; class A { public: A()= default; private: A(const A&)= delete; }; 在任何情况下,这两个定义是否总是相同的? 解决方案 它们是不同的只是生产诊断。如果您将其
..
我是一个C ++初学者,想了解为什么 return std :: list(); 需要括号,但 std :: list foo; 不需要括号。这些构造函数调用之间有什么区别? 解决方案 这些都不是构造函数调用。 第一种是显式类型转换,它创建一个对象 std :: list 。 第二
..
我一直在阅读很多关于C ++类的教程,但他们错过了其他教程包括的内容。 有人可以告诉我如何写和使用一个非常简单的C ++类使用可见性,方法和一个简单的构造函数和析构函数? 解决方案 href =“http://www.java-samples.com/showtutorial.php?tutorialid=313”> C ++中的构造函数和析构函数: #include
..
HI, 我有一个问题,但找不到很长时间的答案,也就是 下面的2个语句有关参数 初始化有什么区别? class A :: A() :a(0),b(0) { } class A :: A() { a = 0 b = 0; c = 0; } 我知道有“直接初始化”和“复制初始化” 不知道什么是其他差异,如果有任何描述 关于第一个语句? 提前
..
我有一个Foo对象,和一个std ::列举它的实例。我的问题是,当我添加一个新的实例到列表,它首先调用ctor,但也调用dtor。然后在另一个实例上的dtor(根据this指针)。 单个实例被添加到列表,但是因为它的dtor 需要一些简化的代码来说明问题: #include #include class Foo { publ
..
这是非常微不足道的,但捷克语(我的本地)不区分隐含和默认,所以我感到困惑的一些捷克翻译隐含和默认构造函数或构造函数调用之间的区别。 struct Test { Test(int n = 0){} };你可以用这些术语描述: 测试t1; 测试t2(); 测试t3 = 3; 测试t4(4); 测试t5 =测试(5); $ b b
..
我记得在一本C ++的书中(很久以前)读到,内联的构造函数和析构函数,特别是对于派生类是不是一个好主意。 我知道内联会导致一些膨胀的目标代码,但有任何其他设计考虑,阻止内联构造函数和析构函数?当然大多数编译器可以拒绝内联并继续创建一个函数体,但是如果他们内联了什么惩罚可能需要支付? 解决方案 编译器可以自由的内联代码,你没有声明内联,并且是免费的内联代码,你已经声明内联。我看到编译器做这
..
我怎么能告诉STL,具体为方法resize()在向量中,使用非默认的构造函数初始化对象,并使用哪些参数? I平均值: class something { int a; something(int value); } std :: vector很多东西; many_things.resize(20);更一般地说,如何强制STL使用我的构造
..