中易网

C++构造函数的问题?

答案:2  悬赏:50  
解决时间 2021-03-15 03:26
orderlist():Maxsize(SIZE),last(-1){cout<<"last="<<last<<endl;}//构造函数,初始化列表
orderlist(){Maxsize=SIZE;last=-1;cout<<"!!"<<endl;}

我想问这两种构造函数有什么本质上的区别?
最佳答案
  • 初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。
     
    主要是性能问题,对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始化差别不是很大,但是对于类类型来说,最好使用初始化列表,为什么呢?由下面的测试可知,使用初始化列表少了一次调用默认构造函数的过程,这对于数据密集型的类来说,是非常高效的。同样看上面的例子,我们使用初始化列表来实现Test2的构造函数。
    struct Test2
    {
    Test1 test1 ;
    Test2(Test1 &t1):test1(t1){}
    }
    使用同样的调用代码,输出结果如下:
    Construct Test1
    Copy constructor for Test1
    第一行输出对应 调用代码的第一行
    第二行输出对应Test2的初始化列表,直接调用拷贝构造函数初始化test1,省去了调用默认构造函数的过程。
    所以一个好的原则是,能使用初始化列表的时候尽量使用初始化列表
  • 全部回答
    你的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
    我要举报
    如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    匙换偏旁组词
    安卓系统的平板电脑可以用USB分线器吗?我的是
    维丰小区我想知道这个在什么地方
    最靠里的牙龈肿痛,连喝水都疼,而且吃了消炎
    动画片中蓝色带铃铛的猫叫什么名字
    什么是独立柱基?
    青岛市工伤八级伤残赔偿标准为多少
    铃木王F421的现在我买去了8000贵吗?他说是进
    我的电脑登上QQ以后就会出现 无法启动此程序
    哪本小说的男主角叫纳寒钰
    概括格列佛是怎么逃离小人国的
    怎么正确的使用洗衣液?
    佛鳄龟烂甲怎么办,珠瘀暄吵
    丹溪路/天和街(路口)我想知道这个在什么地方
    退休职工的医药费能二次报诮吗
    推荐资讯
    k242次列车经过哪些站
    马铃薯解药害
    盗窃罪有不能犯未遂吗?
    sql保存图片路径,及客户端读取
    鼠标上面的媒体键怎么用
    我跟男孩是网恋,交友软件认识的,认识四个多
    总是开心不起来,心烦燥,懒得动,对家人不耐烦
    我家狗大概5天前突然变的特别懒光吃肉,昨天
    如何和客户良性沟通?
    我家住在这个屯怎么下载
    十八里店乡横街子村民兵连地址有知道的么?有
    月经一个星期没来,试纸测不出来,是不是怀孕
    手机登qq时,显示手机磁盘不足,清理后重新登
    刺客的套装怎么选啊?