c++中构造函数可不可以显式调用?

c++中构造函数可不可以显式调用?有的人说不可以,有的说可以。我都糊涂了。到底是可以还是不可以啊?在给对象数组初始化时是不是显式调用?

可以显示调用,不过只能用于初始化时。
假设有类A, 并有构造函数A(int,int);
在定义A的对象a时,可以显示调用构造函数,写作
A a=A(1,1);
但是更常用和更简洁的写法为
A a(1,1);
所以显示调用构造函数的方法并不常用,但C++的语法是支持这种写法的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-02
是不可以的,对象数组初始化的时候,只是用这种形式传递参数,并不是函数调用。
第2个回答  2013-05-02
显示调用是指在程序中能找到相应的调用代码,隐式调用是指程序中找不到相应的调用代码。
具体来说就是看你自己写代码的时候有没有直接调用构造函数了
第3个回答  2013-05-02
可以的!

Class a = Class(); //就是现实调用

定义临时变量的时候也是:
Class(); //创建一个临时变量

a.~Clalss(); //显示调用析构函数本回答被提问者和网友采纳
第4个回答  2013-05-01
你说我的显式是怎样的显式?
a.MyClass(1,2,3); //这是不对的,调用没有语法错误,但是不同编译器效果不一样
MyClass * a = new MyClass(1,2,3);//这种方式是可以的追问

例如有一个类time,在main函数中定义了一个对象数组并初始化 time t[3]=
{time(1,2,3),time(4,5,6),time(7,8,9)};这是不是显式调用?

追答

这是在构造临时对象,我不知道这是不是你说我的“显式”调用,你说我的显式调用含义不明确。

追问

不懂!

相似回答