委托构造
#include "stdafx.h"
#include <iostream>
class 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"
#include <iostream>
class 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
}