c++中构造函数的名字和类名字相同,有什么考虑?

qychjj 2009-12-07 04:44:04
(1)c++中构造函数的名字和类名字相同,有什么考虑?
(2)构造函数的返回值是什么?
...全文
1202 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2010-01-08
  • 打赏
  • 举报
回复
python语言的构造函数就叫__init__
所以,真值得你在这个问题上这么折腾么?
另外,就别引用这么2份低质量书籍里的东西了,作不了数的文字。
wesleyluo 2010-01-08
  • 打赏
  • 举报
回复
看到上面才明白点东东。
laozhong110 2010-01-08
  • 打赏
  • 举报
回复
应该与编译器约定有关
qychjj 2010-01-08
  • 打赏
  • 举报
回复
在高质量编程中,说道构造函数和析购函数名与类同名,为了使编译器能认得出,而且能自动执行;并且目前的命名方式简单,合理。

不返回值,是为了使编译器不至于不知所措。
但张国锋的《c++语言及其编程设计教程》中说道,其实构造函数是有返回值的,只是返回给系统使用罢了。

有没有人研究过c++标准阿,上面怎么说呢?
我没有找到其下载的地方,如果哪位有的话,能否共享一下?谢谢啦!


[Quote=引用 20 楼 sammylan 的回复:]
无语了.........
c++中构造函数的名字和类名字相同
主要原因并非是为了独一无二或者仅仅是C++之父的个人喜好
而是为了语意的统一和更加的直观

试想一下
对于基本类型如int,定义其指针并分配内存的格式如下
int * pi = new int(0)...
对于类
当然也要跟基本类型相一致
DataType * pMyDataType = new DataType(XXXX);
而DataType(XXXX)调用的就是对应的构造函数

或许你会说,我可以统一将所有类的构造函数都命名为
__ctor()
new DataType(XXXX);的时候再调用__cotr的对应版本啊?
但是这样有直接将构造函数命名为类名直观吗?
[/Quote]
SammyLan 2009-12-07
  • 打赏
  • 举报
回复
无语了.........
c++中构造函数的名字和类名字相同
主要原因并非是为了独一无二或者仅仅是C++之父的个人喜好
而是为了语意的统一和更加的直观

试想一下
对于基本类型如int,定义其指针并分配内存的格式如下
int * pi = new int(0)...
对于类
当然也要跟基本类型相一致
DataType * pMyDataType = new DataType(XXXX);
而DataType(XXXX)调用的就是对应的构造函数

或许你会说,我可以统一将所有类的构造函数都命名为
__ctor()
new DataType(XXXX);的时候再调用__cotr的对应版本啊?
但是这样有直接将构造函数命名为类名直观吗?
macrojj 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wyzhao0102 的回复:]
占个便宜
构造函数有没有this指针?
[/Quote]


不然你觉得它怎么初始化数据的。
陌上花花 2009-12-07
  • 打赏
  • 举报
回复
就是一种规则,没有特别的东西,自己感觉是这样
wyzhao0102 2009-12-07
  • 打赏
  • 举报
回复
占个便宜
构造函数有没有this指针?
macrojj 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huiguixian 的回复:]
这个好像从来没有听说过
构造函数本来就是和类的名字相同 这个貌似所有面向对象的语言都是这样吧
另外 构造函数是对类的对象的所有成员初始化 肯定不需要返回值
[/Quote]
原因和答案不太符合啊

为什么不要返回值 是因为返回值不知道给谁。
好想知道怎么调用构造函数 还要返回值。。。
fanchangyong 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huiguixian 的回复:]
这个好像从来没有听说过
构造函数本来就是和类的名字相同 这个貌似所有面向对象的语言都是这样吧
另外 构造函数是对类的对象的所有成员初始化 肯定不需要返回值
[/Quote]

编译器的一种规定而已.....
「已注销」 2009-12-07
  • 打赏
  • 举报
回复
学习
「已注销」 2009-12-07
  • 打赏
  • 举报
回复
学习
小小攻城师 2009-12-07
  • 打赏
  • 举报
回复
这个好像从来没有听说过
构造函数本来就是和类的名字相同 这个貌似所有面向对象的语言都是这样吧
另外 构造函数是对类的对象的所有成员初始化 肯定不需要返回值
小小攻城师 2009-12-07
  • 打赏
  • 举报
回复
这个好像从来没有听说过
构造函数本来就是和类的名字相同 这个貌似所有面向对象的语言都是这样吧
另外 构造函数是对类的对象的所有成员初始化
ffffguuii 2009-12-07
  • 打赏
  • 举报
回复
构造函数无返回值的。
jkgao 2009-12-07
  • 打赏
  • 举报
回复
等待答案
shenzi 2009-12-07
  • 打赏
  • 举报
回复
可能是 定义一个对象的时候 如 A a; 调用相应的构造函数看起来是这么回事吧、、、
刘大枭 2009-12-07
  • 打赏
  • 举报
回复
一个类的构造函数必须和类名字相同,这是C++语音的规定,没什么好说的,规定是这样。构造函数之所以没有返回值,是因为构造函数通常在声明一个新对象时被调用,也就是说当调用构造函数后这个对象才存在,才能处理对象的各种状态。

这样存在的一个弊端是,如果调用构造函数出现异常,不能通过返回值来判断处理。
pengzhixi 2009-12-07
  • 打赏
  • 举报
回复
就当是一个王八的屁股--龟腚
冻结 2009-12-07
  • 打赏
  • 举报
回复
好像从另一个面向对象语言抄来的。
无返回。
加载更多回复(4)

65,180

社区成员

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

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