0

C++要点笔记(26)——构造函数(constructor)

Posted by nanxiao on 一月 14, 2016 in C++要点笔记 |

构造函数(constructor)和类(class)名字相同,但要注意构造函数没有返回值(void也不行):

class A {
public:
    A();
private:
    int member;
};

A::A()
{
    member = 3;
}  

如果没有提供构造函数,C++会自动生成一个不带参数的默认构造函数(即default constructordefault constructor可以是没有参数或所有参数都有默认值) ,这个默认构造函数会调用类成员的默认构造函数初始化所有成员,但不会初始化primitive typecharint等等)。一旦提供了一个构造函数,C++就不会提供默认的不带参数的构造函数了,这点一定要注意。

可以用initialization list方式初始化类的成员:

class A {
public:
    A();
    void Output();
private:
    int member;
    int haha;
};

A::A():member(3), haha(8)
{
}

只能使用initialization list初始化的成员:

(1)constreference(可以参考SO上的这篇帖子):

Capture 当程序执行进入constructor代码时,整个object应该已经初始化完成了。 执行initialization list时,整个object还没有完全初始化完成。 因此constreference只能在initialization list中进行“初始化”,而不能在constructor中进行“赋值”。

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Copyright © 2013-2017 我的站点 All rights reserved.
This site is using the Multi Child-Theme, v2.2, on top of
the Parent-Theme Desk Mess Mirrored, v2.5, from BuyNowShop.com