由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ 中 myobject * a =new myobject[n] 的问题
相关主题
c++ initialize struct问个C++的operator conversation function问题
问个copy constructor的问题C++要是有null object就好了
C++的一个小疑问,求解惑c++ question
find bugs of c++ codes两个继承问题
问一个 copy constructor 的问题 (C++)c++问题,请高人指点迷津,c++ faq lite的一个例子
question about c++ constructorvector在constructor里初始化
[合集] 一些C++问题c++ 从linux移植到windows上面
Is the order of initialization a, b, c or c, b, a?请教一个基本的constructor和destrcutor问题
相关话题的讨论汇总
话题: myobject话题: parm话题: int话题: new话题: c++
进入Programming版参与讨论
1 (共1页)
k*****l
发帖数: 34
1
假设myobject 只有一个带参数的constructor: myobject(int parm),
^^^^
myobject * a =new myobject[n]
编译的时候说找不到 myobject() to initialize a vector.
试图加入参数: myobject * a =new myobject[n](parm)
又说 No initializer allowed for new of an array
请问有什么好办法解决这个问题?
t*******y
发帖数: 57
2
加一个啥也不干或者提供默认参数的constructor myobject()

【在 k*****l 的大作中提到】
: 假设myobject 只有一个带参数的constructor: myobject(int parm),
: ^^^^
: myobject * a =new myobject[n]
: 编译的时候说找不到 myobject() to initialize a vector.
: 试图加入参数: myobject * a =new myobject[n](parm)
: 又说 No initializer allowed for new of an array
: 请问有什么好办法解决这个问题?

k*****l
发帖数: 34
3
en .我也这么想,同时还要填一个myobject::init(int parm)完成
带参数的constructor: myobject(int parm)一摸一样的工作。 够麻烦的。
关键问题是: 为什么c++不让 new myobject[n]带参数呢?? 实现上应该不难啊。这个
限制有什么特别的理由??

【在 t*******y 的大作中提到】
: 加一个啥也不干或者提供默认参数的constructor myobject()
N***m
发帖数: 4460
4
估计是new只负责分配空间?
可以用vector ob(n,myobject(parm))来实现。

这个

【在 k*****l 的大作中提到】
: en .我也这么想,同时还要填一个myobject::init(int parm)完成
: 带参数的constructor: myobject(int parm)一摸一样的工作。 够麻烦的。
: 关键问题是: 为什么c++不让 new myobject[n]带参数呢?? 实现上应该不难啊。这个
: 限制有什么特别的理由??

z****e
发帖数: 2024
5
等OX
h****8
发帖数: 599
6
new 也负责调用constructor的

【在 N***m 的大作中提到】
: 估计是new只负责分配空间?
: 可以用vector ob(n,myobject(parm))来实现。
:
: 这个

N***m
发帖数: 4460
7
好像是的耶。搞不懂了。

【在 h****8 的大作中提到】
: new 也负责调用constructor的
h****8
发帖数: 599
8
我想问题在于,如果new可以接受N个参数作为constructor得参数,那么new本身的
signature怎么写?

【在 N***m 的大作中提到】
: 好像是的耶。搞不懂了。
p***o
发帖数: 1252
9
这个需求用operator new[]再加上placement new就好了。

【在 h****8 的大作中提到】
: 我想问题在于,如果new可以接受N个参数作为constructor得参数,那么new本身的
: signature怎么写?

f*****Q
发帖数: 1912
10
看这这个问题突然想起了十多年前的我……
相关主题
question about c++ constructor问个C++的operator conversation function问题
[合集] 一些C++问题C++要是有null object就好了
Is the order of initialization a, b, c or c, b, a?c++ question
进入Programming版参与讨论
h*****0
发帖数: 4889
11
没有办法解决。C++这个就是悲剧。
用指针数组吧。

【在 k*****l 的大作中提到】
: 假设myobject 只有一个带参数的constructor: myobject(int parm),
: ^^^^
: myobject * a =new myobject[n]
: 编译的时候说找不到 myobject() to initialize a vector.
: 试图加入参数: myobject * a =new myobject[n](parm)
: 又说 No initializer allowed for new of an array
: 请问有什么好办法解决这个问题?

z****e
发帖数: 2024
12
姐姐能不能给写一个?
我写个operator new[]怎么都没搞成。好像只能用一个argument in the parameter
list.

【在 p***o 的大作中提到】
: 这个需求用operator new[]再加上placement new就好了。
p***o
发帖数: 1252
13
都改过来了还这么跳!
T *arr = static_cast(operator new[] (sizeof(T)*N));
for (int i = 0; i < N; ++i)
new (arr+i) T(whatever_depends_on_i);

【在 z****e 的大作中提到】
: 姐姐能不能给写一个?
: 我写个operator new[]怎么都没搞成。好像只能用一个argument in the parameter
: list.

z****e
发帖数: 2024
14
姐,你这句:
“都改过来了还这么跳!”
我读了半天,硬是没有弄明白什么意思!以前从来没见过这句话啊。
你给语法分析分析吧。
什么“都改过来了”?
谁在 “跳”?

【在 p***o 的大作中提到】
: 都改过来了还这么跳!
: T *arr = static_cast(operator new[] (sizeof(T)*N));
: for (int i = 0; i < N; ++i)
: new (arr+i) T(whatever_depends_on_i);

z****e
发帖数: 2024
15
怎么delete?
class A{
public:
A(int i):i(i){
cout<<"A::ctor"< }
int get() const{
cout< }
~A(){
cout<<"A::~A()"< }
private:
int i;
};
template
T* new_with_ctor(int N){
T *arr = static_cast(operator new[] (sizeof(T)*N));
for (int i = 0; i < N; ++i)
new (arr+i) T(i);
return arr;
}
int main(int argc, char* argv[]){
int N=3;
A* p=new_with_ctor(N);
for(int i=0;i p[i].get();
}
//destruction
for(int i=0;i

【在 p***o 的大作中提到】

: 都改过来了还这么跳!
: T *arr = static_cast(operator new[] (sizeof(T)*N));
: for (int i = 0; i < N; ++i)
: new (arr+i) T(whatever_depends_on_i);

X****r
发帖数: 3557
16
operator delete[] (p);

【在 z****e 的大作中提到】
: 怎么delete?
: class A{
: public:
: A(int i):i(i){
: cout<<"A::ctor"<: }
: int get() const{
: cout<: }
: ~A(){

z****e
发帖数: 2024
17
明白鸟。
这个东东又让我觉得精进了一步。

【在 X****r 的大作中提到】
: operator delete[] (p);
z****e
发帖数: 2024
18
还想问一句,
默认的operator new[]里边是怎么开辟内存的?
默认的operator delete[] 呢?
我刚才是重载了这个两个东东,里边都用了malloc 和free。
但是默认的,里边是用的什么?

【在 X****r 的大作中提到】
: operator delete[] (p);
X****r
发帖数: 3557
19
这个不是你的事。

【在 z****e 的大作中提到】
: 还想问一句,
: 默认的operator new[]里边是怎么开辟内存的?
: 默认的operator delete[] 呢?
: 我刚才是重载了这个两个东东,里边都用了malloc 和free。
: 但是默认的,里边是用的什么?

t****t
发帖数: 6806
20
这个回答很有气势, 我喜欢! 下次我也这么答. It's not of your business!

【在 X****r 的大作中提到】
: 这个不是你的事。
相关主题
两个继承问题c++ 从linux移植到windows上面
c++问题,请高人指点迷津,c++ faq lite的一个例子请教一个基本的constructor和destrcutor问题
vector在constructor里初始化一道 memset in C++的题
进入Programming版参与讨论
z****e
发帖数: 2024
21
master shifu,你这个说错了,应该是:
It's none of your business.
hehe.

【在 t****t 的大作中提到】
: 这个回答很有气势, 我喜欢! 下次我也这么答. It's not of your business!
z****e
发帖数: 2024
22
好。有红猪侠坐镇,我就高枕无忧了。

【在 X****r 的大作中提到】
: 这个不是你的事。
t****t
发帖数: 6806
23
i think both can be used.

【在 z****e 的大作中提到】
: master shifu,你这个说错了,应该是:
: It's none of your business.
: hehe.

z****e
发帖数: 2024
24
恩。俺那个更像是英式的。

【在 t****t 的大作中提到】
: i think both can be used.
z****e
发帖数: 2024
25
你好像又错了?
是不是
i think either can be used.
更好?
嘻嘻。

【在 t****t 的大作中提到】
: i think both can be used.
t****t
发帖数: 6806
26
probably...

【在 z****e 的大作中提到】
: 你好像又错了?
: 是不是
: i think either can be used.
: 更好?
: 嘻嘻。

z***e
发帖数: 5393
27
靠,thrust,你收了个女徒弟?

【在 z****e 的大作中提到】
: 你好像又错了?
: 是不是
: i think either can be used.
: 更好?
: 嘻嘻。

t****t
发帖数: 6806
28
more like a tang monk and definitely not my apprentice.

【在 z***e 的大作中提到】
: 靠,thrust,你收了个女徒弟?
P********e
发帖数: 2610
29
Tang monk不然真不好理解

【在 t****t 的大作中提到】
: more like a tang monk and definitely not my apprentice.
t****t
发帖数: 6806
30
"Tang monk不然真不好理解"才真不好理解呢, 你说的是中文吗?

【在 P********e 的大作中提到】
: Tang monk不然真不好理解
相关主题
关于C/C++里的Static variable的memory allocation/initializa问个copy constructor的问题
一道c++的考古题C++的一个小疑问,求解惑
c++ initialize structfind bugs of c++ codes
进入Programming版参与讨论
G****A
发帖数: 4160
31
1. If you want to create an array of class objects, the class must have
a default constructor.
2. try two ways:
const int STKS = n;
Myobject myobject[STKS] = {
Myobject(parm),
Myobject (parm),
Myobject (parm),
Myobject (parm),
};
or
you can use parm as default value in default constructor for easier
life:
Myobject::Myobject(int xxx=parm)
Myobject myobject[STKS];

【在 k*****l 的大作中提到】
: 假设myobject 只有一个带参数的constructor: myobject(int parm),
: ^^^^
: myobject * a =new myobject[n]
: 编译的时候说找不到 myobject() to initialize a vector.
: 试图加入参数: myobject * a =new myobject[n](parm)
: 又说 No initializer allowed for new of an array
: 请问有什么好办法解决这个问题?

1 (共1页)
进入Programming版参与讨论
相关主题
请教一个基本的constructor和destrcutor问题问一个 copy constructor 的问题 (C++)
一道 memset in C++的题question about c++ constructor
关于C/C++里的Static variable的memory allocation/initializa[合集] 一些C++问题
一道c++的考古题Is the order of initialization a, b, c or c, b, a?
c++ initialize struct问个C++的operator conversation function问题
问个copy constructor的问题C++要是有null object就好了
C++的一个小疑问,求解惑c++ question
find bugs of c++ codes两个继承问题
相关话题的讨论汇总
话题: myobject话题: parm话题: int话题: new话题: c++