constructor相关内容

构造器通过抛出异常完成?是否有内存泄漏?

我正在浏览这篇文章 注意:如果一个构造函数抛出一个异常结束,与对象本身相关联的内存 将被清除 - 是没有内存 泄漏。例如: void f() { X x ; //如果X :: X()抛出,x本身的内存不会泄露 Y * p = new Y(); //如果Y :: Y()throws,* p本身的内存不会泄露 } $ b b 我很难理解这一点,如果有人能够澄清这一 ..
发布时间:2016-10-14 21:19:29 C/C++开发

是否可以使用std :: map在C ++与没有任何复制操作符的类?

我使用没有任何复制操作符的类(对象):它基本上不能被复制现在。我有一个 std :: map objects 变量,用于列出带有int标识符的对象。我如何添加一个对象到这个地图,而不必使用复制操作符? 我尝试过 objects.insert(std :: pair); 但不会编译。我只是想使用默认构造函数在地图中创建我的 ..
发布时间:2016-10-14 21:03:19 C/C++开发

将临时对象作为参数传递值 - 是拷贝构造函数吗?

如果有标准和复制构造函数的类 class Ex { //构造函数定义 } 和一个以参数为参数的函数 void F(Ex _exin){...} 采取以下代码: Ex A; F(A); // F的参数是从A F(Ex())拷贝构造的; // F的参数使用默认构造函数 在第三行我传递给 F 使用默认构造函数创建 ..
发布时间:2016-10-14 21:00:10 C/C++开发

构造函数可以返回NULL值吗?

我知道构造函数不会“返回”任何东西,但例如如果我调用 CMyClass * object = new CMyClass()有任何方法使对象为NULL如果构造函数失败?在我的情况下,我有一些图像必须加载,如果文件读取失败,我想它返回null。有什么办法吗? 提前感谢。 解决方案 我同意其他人你应该使用异常,但如果你真的需要使用NULL为某种原因,使构造函数私有和使用工厂方法: ..
发布时间:2016-10-14 20:45:37 C/C++开发

构造函数返回什么?

我的问题是构造函数返回什么?这个问题与“什么是构造函数的返回类型是什么? 我在某处读到一个构造函数返回一个完整的对象隐式(即隐式返回类型是类的名称),但不应明确指定。 struct empty {}; int main(){ empty(); //创建一个临时的,隐式的构造函数叫做 } 隐式返回类型应该是类的名称,在这种情况下 empty 。 解决方案 ..
发布时间:2016-10-14 20:27:31 C/C++开发

来自tuple的构造函数参数

假设我有一个模板,它由类类型和多个参数类型参数化。匹配这些类型的一组参数存储在元组中。如何将这些传递给类类型的构造函数? 在几乎C ++ 11代码中: template struct foo { tuple args; T gen(){return T(get(args),get(a ..
发布时间:2016-10-14 20:04:17 C/C++开发

C ++和Java对象模型之间的区别

在Java中,序列化对象非常容易。在C ++中,只有安全(?)到 memcpy 对象,只要它们像C structs(没有多态)。在C ++中,如果编译器能够生成默认(琐碎)复制构造函数,那么为什么它不能生成自动序列化的代码? 在Java中,只有静态函数和数据成员可以从ctor访问。在C ++中,我可以很高兴地使用来自ctor的非静态成员和函数。 在Java中,我可以初始化数据成员班上。 ..
发布时间:2016-10-14 19:57:47 Java开发

初始化程序列表*参数*评估顺序

所以,C ++标准要求类成员按照它们在类中声明的顺序来初始化,而不是在任何构造函数的初始化器列表中提及它们的顺序。然而,这并不意味着对这些初始化的参数进行求值的顺序。我正在使用一个系统,它经常传递对序列化对象的引用,并想知道我是否可以确保从正确的顺序读取它的位,独立于这些位写入对象的字段的顺序。 p> struct Foo { int a; double b; //我想能够这样做 ..

什么时候C ++ POD类型得到零初始化?

来自C的背景,我一直假设POD类型(例如int)永远不会自动零初始化在C + +,但似乎这是完全错误! 我的理解是,只有'裸体'非静态POD值不会得到零填充,如代码片段所示。我有没有错,还有其他重要的情况,我错过了吗? static int a; struct Foo {int a;}; void test() { int b; Foo f; int * ..
发布时间:2016-10-14 12:51:20 C/C++开发