gcc new 操作符竟然可以动态分配带参数的类对象数组?

yyunffu 2010-11-18 04:31:58
如下代码:

class a{
public:
a(int c){
b=c;
};
private:
int b;
};

a *pA=NULL;
pA=new a[10](1);

竟然可以这么用?

另外,gcc下数组可以直接赋值?
如下:
double e[10]={10};
double f[10]={20};
e=f;

可以这么用?

这些都是gcc扩展,还是新标准规定?
...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyunffu 2010-11-18
  • 打赏
  • 举报
回复
不好意思,linux装在内网机器上,无法测试我本机代码,刚刚linux下跑了一下,第一种情况的确是不可行的。

由于是一个比较大的软件包,仅取其中一部分,所以没有做验证,网上查了很长时间,未见有这种用法,以为是gcc扩展。
gules 2010-11-18
  • 打赏
  • 举报
回复
你没有实际做测试,为什么说pA=new a[10](1);可以?也太不负责了吧?!

另外,
int n = 10;
int d[n];
这种用法。

在开启了C99的情况下,是可行的。
luciferisnotsatan 2010-11-18
  • 打赏
  • 举报
回复
GCC不是编C的吗?g++是编c++的。
class, new是c++的东西,gcc能编?

数组名e不能当左值来用
yyunffu 2010-11-18
  • 打赏
  • 举报
回复
我暂时没有linux环境,咱还无法做验证。
情况是在网上下载了一个软件包,打算移植到vc2005下,碰到很多问题。比如动态数组,如下:
int n = 10;
int d[n];
这种用法。

第二个问题关键是 e=f; 这一句。vc2005下如下提示:error C2106: “=”: 左操作数必须为左值
gules 2010-11-18
  • 打赏
  • 举报
回复
pA=new a[10](1); // 这个你确定可以通过吗?GCC什么版本?反正我的GCC是通不过!

double e[10]={10}; // 这个是数组显示初始化,本来就有,不是扩展。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧