new 类名和new 类名()的区别是什么?

fanchangyong 2009-05-07 11:44:52
前几天想到的,经过试验,没试出来,所以想教一下.
它们代表的是什么意思?有什么区别.
...全文
2104 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ubuntuserver 2012-02-26
  • 打赏
  • 举报
回复
强啊,讲得和透彻
aweiname2008 2011-10-06
  • 打赏
  • 举报
回复
我想知道构造对象时new 类名和new 构造函数区别?
firsthym 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Paradin 的回复:]
引用 3 楼 fanchangyong 的回复:
哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.


类名 对象名();
A a();
这个会被认为申明了一个不带参数的返回类型为A的函数a, 而不是对象定义。
[/Quote]
厉害。。。
王旺旺旺 2009-05-14
  • 打赏
  • 举报
回复
受教
hjjdebug 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 operatingtuzi 的回复:]
类名 对象名();
错误:编译器会理解成函数 ,该句话编译无错,但是如果下面你调用成员函数如 对象名.fun(),就会给出编译错误了


类名 对象名;
正确的方法:调用默认构造函数构造一个对象

[/Quote]
支持这个。新的编译器都是这样的。
旧的编译器例如vc6, 认为这两种方法一样,都是声明对象。
Jalien 2009-05-14
  • 打赏
  • 举报
回复
以前也有人这样问 前者被理解为声明返回这个类类型的方法 后者才是变量
fanchangyong 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fanchangyong 的回复:]
引用 8 楼 Paradin 的回复:

引用 3 楼 fanchangyong 的回复:

哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.


类名 对象名();
A a();
这个会被认为申明了一个不带参数的返回类型为A的函数a, 而不是对象定义。


是这样的吗?
[/Quote]

嗯,试过了,正解,谢过,先
fanchangyong 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Paradin 的回复:]
引用 3 楼 fanchangyong 的回复:

哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.


类名 对象名();
A a();
这个会被认为申明了一个不带参数的返回类型为A的函数a, 而不是对象定义。
[/Quote]

是这样的吗?
operatingtuzi 2009-05-12
  • 打赏
  • 举报
回复
类名 对象名();
错误:编译器会理解成函数 ,该句话编译无错,但是如果下面你调用成员函数如 对象名.fun(),就会给出编译错误了


类名 对象名;
正确的方法:调用默认构造函数构造一个对象
漁_夫 2009-05-12
  • 打赏
  • 举报
回复
mark
once_and_again 2009-05-12
  • 打赏
  • 举报
回复


execpton c++ 上有讲.
appleshao 2009-05-12
  • 打赏
  • 举报
回复
学习了
zenny_chen 2009-05-12
  • 打赏
  • 举报
回复
呵呵,其实是一样的。

就好像下面代码:


static int a;
static int b = int();

int main(void)
{
float f = float();
double d = double();
int *p = new int;
int *q = new (&b) int(100);
return a + b;
}



pengzhixi 2009-05-12
  • 打赏
  • 举报
回复
new 类名和new类名()是一样的,但是对内置内型来说有括号的一定初始化为0,没括号的里面的内容不确定.
BuleRiver 2009-05-12
  • 打赏
  • 举报
回复
对于类是一样的,对于内置类型是不一样的
ZangXT 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fanchangyong 的回复:]
哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.

[/Quote]
相同,还是都调用默认构造方法来构造对象。
使用new只是将对象分配在堆上而已。
Sou2012 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fanchangyong 的回复:]
哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.
[/Quote]
不一样的
Paradin 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fanchangyong 的回复:]
哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.
[/Quote]

类名 对象名();
A a();
这个会被认为申明了一个不带参数的返回类型为A的函数a, 而不是对象定义。
sunchao365 2009-05-08
  • 打赏
  • 举报
回复
初始化程度不一样的。[Quote=引用 4 楼 ilysony 的回复:]
引用 3 楼 fanchangyong 的回复:
哦,我可能是记错了,应该是
类名 对象名();和 类名 对象名;
的区别.

不一样的
[/Quote]
ysysbaobei 2009-05-08
  • 打赏
  • 举报
回复
加载更多回复(3)

65,203

社区成员

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

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