82 lines
1.2 KiB
C++
82 lines
1.2 KiB
C++
// 对象的存储
|
|
// 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;
|
|
}
|