orderlist():Maxsize(SIZE),last(-1){cout<<"last="<<last<<endl;}//构造函数,初始化列表
orderlist(){Maxsize=SIZE;last=-1;cout<<"!!"<<endl;}
我想问这两种构造函数有什么本质上的区别?
C++构造函数的问题?
答案:2 悬赏:50
解决时间 2021-03-15 03:26
- 提问者网友:白越
- 2021-03-14 12:17
最佳答案
- 二级知识专家网友:白日梦制造商
- 2021-03-14 12:30
主要是性能问题,对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始化差别不是很大,但是对于类类型来说,最好使用初始化列表,为什么呢?由下面的测试可知,使用初始化列表少了一次调用默认构造函数的过程,这对于数据密集型的类来说,是非常高效的。同样看上面的例子,我们使用初始化列表来实现Test2的构造函数。
struct Test2
{
Test1 test1 ;
Test2(Test1 &t1):test1(t1){}
}
使用同样的调用代码,输出结果如下:
Construct Test1
Copy constructor for Test1
第一行输出对应 调用代码的第一行
第二行输出对应Test2的初始化列表,直接调用拷贝构造函数初始化test1,省去了调用默认构造函数的过程。
所以一个好的原则是,能使用初始化列表的时候尽量使用初始化列表
全部回答
- 1楼网友:何以畏孤独
- 2021-03-14 12:58
你的private和public是大写的么?那两个是关键字,如果没有正确书写可能会出现构造函数错误的问题 我在电脑上编译的结果是 test.cpp(7) : error c2144: syntax error : missing ')' before type 'int' test.cpp(7) : error c2514: 'employee' : class has no constructors test.cpp(5) : see declaration of 'employee' test.cpp(7) : error c2056: illegal expression test.cpp(7) : error c2501: 'public' : missing storage-class or type specifiers test.cpp(50) : fatal error c1004: unexpected end of file found
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯