qfedu-cpp-level/day4/d3.cpp

82 lines
1.2 KiB
C++
Raw Normal View History

// 对象的存储
// this 指针与链式编程(构造器模式)
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class A
{
private:
int a, b, c;
public:
void setA(int a)
{
this->a = a;
}
void setB(int b)
{
this->b = b;
}
void setC(int c)
{
this->c = c;
}
void show()
{
cout << "a = " << a << ", b = " << b << ", c = " << c << endl;
}
};
class ABuilder
{
private:
A *instance;
public:
ABuilder()
{
instance = new A();
}
~ABuilder()
{
if (instance != NULL)
{
cout << "~ABuilder()" << endl;
delete instance;
}
}
public:
ABuilder &a(int a)
{
instance->setA(a);
return *this;
}
ABuilder &b(int b)
{
instance->setB(b);
return *this;
}
ABuilder &c(int c)
{
instance->setC(c);
return *this;
}
A *build()
{
return instance;
}
};
int main()
{
// 构建器设计模式: 构造产品,需要构造器一步一步的完成构造,最后 build() 出产品
ABuilder builder;
A *a1 = builder.a(1).b(3).c(8).build();
a1->show();
return 0;
}