初始化列表

来源:互联网 发布:淘宝小卖家申请直播 编辑:程序博客网 时间:2024/06/04 19:45

构造函数和其它函数不同,除了有名字,参数列表,函数体之外,还有初始化列表。

初始化列表的语法:

class person

{

public:

int a;

person(int age):a(age)//初始化列表的语法

{

}

};

初始化列表效率较高,应该在能使用初始化列表的地方,尽量使用初始化列表:

class A
{
public:
int chang;
int kuan;
int gao;
A()
{
std::cout << "无参构造" << std::endl;
}
A(const A& a)
{
std::cout << "拷贝构造" << std::endl;
}
A& operator=(const A& a)
{
this->chang = a.chang;
this->kuan = a.kuan;
this->gao = a.gao;
std::cout << "=重载" << std::endl;
return *this;
}
};
class B
{
public:
A a;
public:
B(const A& a1)
{
a = a1;
}
};
class C
{
public:
A a;
public:
C(const A& a1):a(a1)
{
}
};
void test()
{
A a;
B b(a);
}

//调用test()函数,会打印出:1.无参构造,2.无参构造,3.=重载。

//第一句无参构造,对应A中的无参构造,第二句无参构造,对应B中的拷贝构造,第三句,=重载,对应B中的拷贝构造

void test1()
{
A a;
C c(a);
}

//调用test1()函数,会得出:1.无参构造,2.拷贝构造.

//与test()函数相比,少了一次无参构造,效率更高

0 0
原创粉丝点击