•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

C++设想形式浅识原型形式【C#.Net教程】,C++,设计模式,原型模式

摘要: 定义:用原型实例指定建立对象的品种,而且经由过程拷贝这些原型建立新的对象。原型形式实在就是从一个对象再建立别的一个可定制的对象,而且不需要知道任何建立的细节。原型形式重要斟酌的深复制与...
定义:用原型实例指定建立对象的品种,而且经由过程拷贝这些原型建立新的对象。

原型形式实在就是从一个对象再建立别的一个可定制的对象,而且不需要知道任何建立的细节。

原型形式重要斟酌的深复制与浅复制,在C++的类设想中,拷贝组织函数就是浅复制,当重载赋值运算符时就是深复制。

浅复制:被复制对象的一切变量都含有本来的对象雷同的值,而一切的对其他对象的援用都依然指向本来的对象。

深复制:把援用对象的变量指向复制过的新对象,而不是原有的被援用的对象。

测试用例:

[code]int main(){
    //生成对象
    ConcretePrototype * conProA = new ConcretePrototype();
    //复制本身
    ConcretePrototype *conProB = conProA->Clone();   //先clone后挪用拷贝组织函数, Output: clone constructor

    delete conProA;
    conProA = NULL;

    delete conProB;
    conProB = NULL;

    return 0;
}

原型形式(Prototype)完成

[code]//接口
class Prototype{
public:
    Prototype(){}
    virtual ~Prototype(){}
    virtual Prototype *Clone() = 0;
};

//完成
class ConcretePrototype: public Prototype{
public:
    ConcretePrototype(): m_counter(0) {}
    virtual ~ConcretePrototype(){}
    //拷贝组织函数
    ConcretePrototype(const ConcretePrototype &rhs){
        std::cout << "constructor\n";
        m_counter = rhs.m_counter;
    }

    //复制本身
    virtual ConcretePrototype *Clone(){
        //挪用拷组织函数
        std::cout << "clone\n";
        return new ConcretePrototype(*this);
    }

private:
    int m_counter;
};

以上就是C++设想形式浅识原型形式的内容,更多相关内容请关注ki4网(www.ki4.cn)!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号