C++:类构造函数能不能调用另一个构造函数

软件和网站开发以及相关技术探讨
回复
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

C++:类构造函数能不能调用另一个构造函数

#1

帖子 cuihao » 2011-01-24 20:56

比如有一个构造函数:
Myclass (int a, int b)

然后又重载了另一个构造函数:
Myclass (int *a)

我能不能直接使用代码:
this->Myclass(a[0], a[1])
定义第二个构造函数?
或者使用:
*this=Myclass(a[0], a[1])
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
neil.sun
帖子: 110
注册时间: 2009-08-28 15:00

Re: C++:类构造函数能不能调用另一个构造函数

#2

帖子 neil.sun » 2011-01-26 16:49

cuihao 写了:比如有一个构造函数:
Myclass (int a, int b)

然后又重载了另一个构造函数:
Myclass (int *a)

我能不能直接使用代码:
this->Myclass(a[0], a[1])
定义第二个构造函数?
或者使用:
*this=Myclass(a[0], a[1])
很久没玩C++的,说错了不要打我。

this->Myclass(a[0], a[1])是对的。构造函数可以调用自己的另一个构造函数。

*this=Myclass(a[0], a[1])是...怎么说呢...不是不对,是不合适。Myclass(a[0], a[1])会生成一个临时的对象,然后把自己的指针指向它?你觉得合适吗?除非你有意为之。
头像
ninsun
帖子: 25
注册时间: 2010-10-31 16:50

Re: C++:类构造函数能不能调用另一个构造函数

#3

帖子 ninsun » 2011-01-31 13:42

用第一种方法,甚至this->都是不需要的吧……:
Myclass(a[0], a[1]);
这样就行了……
第二种方法的话……
我晕了……this是静态的吧……无法赋值的吧……而且……没有new运算符的吗……明显不可能吧……
xinzaibing
帖子: 6
注册时间: 2011-01-31 23:39

Re: C++:类构造函数能不能调用另一个构造函数

#4

帖子 xinzaibing » 2011-01-31 23:58

不行的,构造函数的调用是在你产生一个新的对象的时候由系统自动调用的,根据你传入的参数自动选择不同的构造函数

你试试写下代码跑一下就知道了
回复