C++11委派构造函数的使用及优点

5星 · 超过95%的资源 2 下载量 86 浏览量 更新于2024-08-29 收藏 60KB PDF 举报
C++11委派构造函数的使用方法 C++11是C++标准的一个重要版本,引入了许多新的语言特性,其中之一就是委派构造函数。委派构造函数是一种特殊的构造函数,可以将类成员构造代码集中在某一个构造函数中,其他构造函数可以通过调用目标构造函数来实现类成员构造。 在C++98中,如果一个类有多个构造函数且要实现类成员构造,这些构造函数通常要包含基本相同的类成员构造代码。在坏的情况下,相同的类成员构造语句被拷贝粘贴在每一个构造函数中。这会导致代码重复和维护困难。 基于C++98中的类成员构造问题,C++11新特性中,程序员可以将公有的类成员构造代码集中在某一个构造函数里,这个函数被称为目标构造函数。其他构造函数通过调用目标构造函数来实现类成员构造,这些构造函数被称为委派构造函数。在该新特性提出之前,构造函数是不能显式被调用的,委派构造函数打破了这一限制。 使用委派构造函数可以使代码更加简洁和清晰。例如,以下是一个简单的示例程序: ```cpp class A { public: // A(int i) 为 A() 的委派构造函数 A(): A(0) {} // A(int i, int j) 为 A(int i) 的委派构造函数 A(int i): A(i, 0) {} A(int i, int j) { num1 = i; num2 = j; average = (num1 + num2) / 2; } private: int num1; int num2; int average; }; ``` 在这个示例程序中,我们可以看到,在构造函数 A() 的初始化列表里,程序调用了 A(0),这是委派构造函数的语法。我们称 A(int i) 为 A() 的目标构造函数,而 A() 为 A(int i) 的委派构造函数。同理,A(int i, int j) 为 A(int i) 的目标构造函数,而 A(int i) 为 A(int i, int j) 的委派构造函数。 通过使用委派构造函数,我们可以使代码更加简洁和清晰。目标构造函数和委派构造函数跟其他普通的构造函数一样有相同的接口和语法,它们并没有特殊的处理和标签。 在C++11中,一个委派构造函数可以是另一个委派构造函数的目标构造函数,委派构造函数和目标构造函数是相对而言的。目标构造函数是通过重载和类参数推导准则而选定的。 委派构造函数是C++11的一个重要特性,可以使代码更加简洁和清晰。它可以帮助程序员更好地组织代码,减少代码重复和维护困难。