委托构造与继承构造
- 委托构造
- 继承构造
委托构造
#include "stdafx.h" #includeclass Base { public: int value1; int value2; //无参默认构造 Base() { value1 = 1; } //int 参数构造 目的是在此构造时把默认构造也进行构造,这就是委托构造 Base(int value) : Base() //委托Base()构造函数 { value2 = 2; } } int main() { Base b(2); std::cout << b.value1 << std::endl; // 输出为1 std::cout << b.value2 << std::endl; // 输出为2 }
很简单,一句话总结:一个构造函数调用了另一个构造函数
继承构造#include "stdafx.h" #includeclass Base { public: int value1; int value2; //无参默认构造 Base() { value1 = 1; } //int 参数构造 目的是在此构造时把默认构造也进行构造,这就是委托构造 Base(int value) : Base() //委托Base()构造函数 { value2 = 2; } } class subBase : public Base() { public: //SubBase(int v) //此处我们想对value2赋值只能是在构造函数中额外的赋值 //{ // value2 = v; //} //所以:直接使用父类的构造: using Base::Base; //告诉编译器,直接使用父类构造 } int main() { subBase b(2); std::cout << b.value1 << std::endl; // 输出为1 std::cout << b.value2 << std::endl; // 输出为2 }



