- 浏览: 400945 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (309)
- xaml C# wpf (0)
- scala java inner clas (1)
- Tools UML Eclipse UML2 (1)
- Timer .NET Framework (1)
- perl (6)
- python function paramter (1)
- Python Docstring (1)
- Python how to compare types (1)
- Python (8)
- java (5)
- C# (76)
- C# WPF (0)
- p4 (0)
- WPF (46)
- .net (6)
- xaml (1)
- javascript (40)
- windows (10)
- scala (4)
- winform (1)
- c++ (48)
- tools (12)
- cmd (1)
- os (0)
- CI (0)
- shell (0)
- C (2)
- haskell (49)
- functional (1)
- tool (1)
- gnu (1)
- linux (1)
- kaskell (0)
- svn (0)
- wcf (3)
- android (1)
最新评论
Follow our previous discussion of how to initialize the object array in this post - c++ - object array intializer in c++ , We said that the if we use the new operator to allocate objects array on the heap, there is no way to do the initialization except for the default constructors, well, here is some tricks that you can do to make the objects array allocated on the heap to have the non-default constructor called.
the trick is to use the placement new operator. (you may refer to this post - c++ - a sample class to show common aspects of object initialization/uninit on the definition of Account class, you may need to add yet another memer methods).
here is the code.
/** * file * heap_array_initializer.cpp * description: * THis shows some way to initialize an array of classes in the heap */ #include "stdafx.h" #include "acct.h" #include <iostream> #include <cstddef> #include <new> // include this header to use the placement new operator. #include <utility> // what willl use use this for? abort()??? #include <vector> using std::cout; using std::endl; using std::cerr; using std::vector; using std::pair; typedef pair<char *, double > value_pair; /** init_heap_array() * * declared as a static member function * provides for allocation and initialization * of heap array of class objects * init_values: init value pair for array elements * elem_count: number of elements in array if 0, array is size of init_value vector */ Account * Account::init_heap_array(vector<value_pair> &init_values, vector<value_pair>::size_type elem_count = 0) { vector<value_pair>::size_type vec_size = init_values.size(); if (vec_size == 0 && elem_count == 0) { return 0; } // size of the array to allocate is either elem_count // or, if elem_count is 0, the size of vector.. size_t elems = elem_count ? elem_count : vec_size; //grab a chunk of raw memory to stoe array char * p = new char [sizeof(Account) * elems]; // individuallky initialize each array elements int offset = sizeof(Account); for (int ix = 0; ix < elems; ++ix) { // offset to the ixth elements, // if an initial value pair is provided // pass that pair to the constructor // otherwise, invoke the default constructor if (ix < vec_size) { new (p+offset * ix) Account(init_values[ix].first, init_values[ix].second); } else new (p+offset * ix) Account; } // ok: elements allocated and initialized // retur pointer to first element return (Account *) p; }
发表评论
-
不安装Visual Studio,只用Windows SDK搭建VC环境
2013-12-31 21:52 15345首先你需要下载的是 Microsoft Windows S ... -
rpath - runtime search path
2013-04-03 11:36 1019RPath is a very interesting to ... -
C++ - autogenerated copy constructor and assignment operator gotchas
2013-01-24 13:32 773It has been changed that the s ... -
c++ - rethrow a exception gotchas
2012-12-23 10:57 972As in my prevoius example in j ... -
c++ -typeid operator
2012-10-15 22:30 1065typeid is the one of the meager ... -
c++ - dynamic_cast revisit
2012-10-14 21:21 781There are several built-in type ... -
c++ - virtual inheritance example 1
2012-10-14 15:25 830we have discussed the virtual i ... -
c++ - virtual inheritance
2012-10-12 08:58 992As we have discussed in the pos ... -
c++ type of inheritance
2012-09-28 08:58 755There are 3 types of inheritanc ... -
c++ - vritually virtual new
2012-09-27 23:59 961Let's see what if we want to cl ... -
c++ - virtual destructor
2012-09-27 22:01 981As we all know that virtual des ... -
c++ - vritual function and default arguments
2012-09-27 08:56 1000As we all know that we virtual ... -
c++ - template specialization and partial specialization
2012-09-26 22:38 1335in this post, we are going to e ... -
c++ - member template in class template
2012-09-26 08:19 944class member template can be us ... -
c++ template class and the pattern to use its friends
2012-09-25 23:47 991template class may defined thei ... -
c++ - Friend declaration in class Template
2012-09-25 08:47 1214There are three kinds of friend ... -
c++ - class template default parameters
2012-09-25 08:18 861the template has parameter, it ... -
c++ - operator new and delete and an example of linked list stores by new/delete
2012-09-24 07:53 594The operator new and delete ope ... -
c++ - delete(void *, size_t) or delete(void *)
2012-09-24 07:18 1173In my previous dicuss, we have ... -
c++ - placement operator new() and the operator delete()
2012-09-23 15:22 877A class member operator new() c ...
相关推荐
3. **初始化数据库**:打开命令提示符,使用`mysqld --initialize-insecure`命令来初始化MySQL服务器,这将创建一个没有密码的root用户。 4. **启动服务**:使用`mysqld --install`命令安装MySQL服务,然后用`...
// 使用C++11的std::array容器,更加安全和类型安全 ``` 此外,VC++还支持C++标准模板库(STL)中的`vector`,它可以动态调整大小,并且提供了一种更高级的初始化方法: ```cpp std::vector<int> vec = {1, 2, 3,...
System-Initialize、Finalize.mht
这将创建一个名为`laravel-initialize`的新目录,并在其中安装Laravel框架及其所有依赖。 **三、理解项目结构** 安装完成后,让我们快速浏览一下项目的基本目录结构: - `app/`:包含你的应用程序代码,如控制器...
Person#initialize使用名称Person#initialize在lib/person.rb中定义一个Person类, lib/person.rb提供一个#initialize方法,该方法接受一个#initialize的参数。该参数应存储在@name实例变量中。 2. Dog#initialize...
在这种情况下,运行`mysqld --initialize-insecure --user=mysql`,这会创建一个无密码的用户。 6. **登录并修改默认密码**: 打开新的命令提示符,输入`mysql -u root -p`,然后输入之前生成的随机密码。登录成功...
NX二次开发UF_DRF_initialize_leader_data 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...
NX二次开发UF_DRAW_initialize_view_info 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...
NX二次开发UF_ASSEM_initialize_sequencing_keep_layout 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE ...
NX二次开发UF_EVALSF_initialize_2 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士...
NX二次开发UF_EVAL_initialize_2 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士,...
NX二次开发UF_ASSEM_initialize_sequencing 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...
NX二次开发UF_DRF_initialize_custom_symbol_text_data 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE ...
NX二次开发UF_EVAL_initialize 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士,...
NX二次开发UF_EVALSF_initialize 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士,...
1. Person#initialize使用名称Person#initialize 在lib/person.rb中定义一个Person类, lib/person.rb提供一个#initialize方法,该方法接受一个#initialize的参数。 该参数应存储在@name实例变量中。2. Dog#...
1. Person#initialize使用名称Person#initialize 在lib/person.rb中定义一个Person类, lib/person.rb提供一个#initialize方法,该方法接受一个#initialize的参数。 该参数应存储在@name实例变量中。2. Dog#...
在lib/person.rb中定义一个Person类, lib/person.rb提供一个#initialize方法,该方法接受一个#initialize的参数。 该参数应存储在@name实例变量中。 2. Dog#initialize使用名称和品种默认为“ Mutt” Dog#...
script src =" bower_components/angular-initialize/dist/angular-initialize.js " /> 注意:源码是用es6写的,可以直接用browserify + babel 导入配置 angular . module ( 'myApp' , [ 'ngInitialize' ] ) ; &...
基恩士LK-GD500激光感测初始化设置和参数的录入