游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3427|回复: 4

C++ 里 构造函数为什么不能有返回值呢?

[复制链接]

4

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2007-11-4 11:23:00 | 显示全部楼层 |阅读模式
初学 C++
今天自己练习, 开始一直编译不过。
结果 把一个构造函数 前面 VOID 去掉就可以了。。。
为什么 这样呢?
低级 问题 谢谢 回答。 [em1]

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-11-4 13:14:00 | 显示全部楼层

Re:C++ 里 构造函数为什么不能有返回值呢?

你看书上的构造函数又带void么.
不仔细.

18

主题

82

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-11-4 14:59:00 | 显示全部楼层

Re:C++ 里 构造函数为什么不能有返回值呢?

构造函数名字与类名相同,是一种特殊的函数,他在对象创建的时候调用,用来初始化类中的数据成员,他没有返回值,因为是没有意义的,但他可以有形参,也可以没有形参。如果不显式的写出构造函数,编译器会为你自动生成一个默认的构造函数。

4

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-11-4 22:46:00 | 显示全部楼层

Re:C++ 里 构造函数为什么不能有返回值呢?

谢谢LS回答。。。 我当然看到了 书上没有 但是就是不清楚为社么。。。

0

主题

199

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2007-11-5 11:16:00 | 显示全部楼层

Re:C++ 里 构造函数为什么不能有返回值呢?

其实可以认为构造函数是有返回值的。返回值就是所构造的类。这种说法不光在逻辑上容易理解,而且在具体的代码上也是说得通的。
class OneClass
{
public:
OneClass(){}
};
OneClass returnOneClass()
{
return OneClass();
}
从上面可以看出来,使用OneClass这个构造函数和使用一个返回OneClass的函数的方法是一样。如果还不明白,看下面
OneClass oc1 = OneClass();
OneClass oc2 = returnOneClass();
是完全一样的效果。这和真正没有返回值的void VoidOneClass()函数是不一样的。

因为构造函数的“返回值”是固定的,就没有必要把它写出来。

之所以这样设定,就是为了方便用构造函数构造出一个对象来。既然有了默认的“返回值”,再有自己定义的返回值,反而会带来混乱。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-19 03:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表