委托构造函数是C ++ 11中的新概念。
为什么我们需要委派构造函数?
1.委托构造函数用于防止代码重复。
2.这是委派初始化列表的唯一方法
考虑下面的代码:
#include <iostream>
//for more C ++ tutorial visit www.ProDeveloperTutorial.com
using namespace std;
class MyClass
{
int a;
int b;
int c;
public:
MyClass()
{
a = 0;
b = 0;
c = 0;
}
MyClass(int c)
{
a = 0;
b = 0;
这个->c = c;
}
};
int main()
{
MyClass obj;
}
如果看到默认的构造函数和参数化的构造函数。我们正在执行smae任务“a = 0; b = 0;”。但是我们只是在改变“this->c = c;”。我们正在执行代码重复数据删除。
您可以做的一件事是,可以创建一个公共函数init(),然后可以从两个构造函数中调用它,如下所示:
#include <iostream>
//for more C ++ tutorial visit www.ProDeveloperTutorial.com
using namespace std;
class MyClass
{
int a;
int b;
int c;
public:
void init()
{
a = 0;
b = 0;
c = 0;
}
MyClass()
{
init();
}
MyClass(int c)
{
init();
这个->c = c;
}
};
int main()
{
MyClass obj;
}
但是使用C ++ 11将提供更优雅的解决方案。您可以使用构造函数委托。
#include <iostream>
//for more C ++ tutorial visit www.ProDeveloperTutorial.com
using namespace std;
class MyClass
{
int a;
int b;
int c;
public:
MyClass()
{
a = 0;
b = 0;
c = 0;
}
// Constructor delegation
MyClass(int c): MyClass()
{
这个->c = c;
}
};
int main()
{
MyClass obj;
}
该网站上可用的教程列表:
C编程20+章 | C ++编程80+章 |
100多个编码问题 | 数据结构和算法85+章 |
系统设计20+章 | Shell脚本编写12章 |
4g LTE 60+章节 | 最常见的编码问题 |
5G NR 50+章 | Linux系统编程20+章 |