Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个在设计模式中的名称是什么?_C++_Design Patterns - Fatal编程技术网

C++ 这个在设计模式中的名称是什么?

C++ 这个在设计模式中的名称是什么?,c++,design-patterns,C++,Design Patterns,在上面的示例中,我创建了一个仅由一个无符号整数组成的类MyType MyType是否有设计模式名称?它是一个无符号整数,可以用作无符号整数。但只是使用了不同的名称,这还不是已知的设计模式。那代码的意义是什么?这是一种类似于无符号整数的类型,为什么不使用无符号整数呢?这根本不是一种设计模式,因为设计模式描述了几个类之间的交互,而您只有一个类。Bruce Eckel在第354页“内置类型的构造函数”一段中做了类似的事情。 这样的设计对于严格控制封装类型的初始化非常有用(如Bruce所述)。 但是我不

在上面的示例中,我创建了一个仅由一个无符号整数组成的类MyType


MyType是否有设计模式名称?它是一个无符号整数,可以用作无符号整数。但只是使用了不同的名称,这还不是已知的设计模式。那代码的意义是什么?这是一种类似于无符号整数的类型,为什么不使用无符号整数呢?

这根本不是一种设计模式,因为设计模式描述了几个类之间的交互,而您只有一个类。

Bruce Eckel在第354页“内置类型的构造函数”一段中做了类似的事情。 这样的设计对于严格控制封装类型的初始化非常有用(如Bruce所述)。
但是我不知道它的名字。

不知道设计模式的名字是什么,但是它有一个用途

如果您有一组实现相同成员函数的类,并且希望以相同的方式处理它们,那么它将非常有用。其中一些类包含简单类型,如
int
unsigned
,而另一些类包含更复杂的类/结构类型


目标是允许“装箱”基元类型像更复杂的“真实”类类型一样工作。当这些类都可以用作一组模板类或函数中的模板参数时(即,当所有类继承相同的基本接口类时),这一点特别有用。

这根本不是一种设计模式。 它是一个只能在C++中使用的“成语”。
设计模式通常与语言无关,可以用任何支持基本原则(如委派/继承)的语言实现。

这对于
typedef unsigned MyType
有什么价值?我称之为“包装器”转换是隐式发生的。我对这种模式的有效性相当怀疑。。。这并不明显。我很好奇为什么你要用
a(\u a-1)
@birryrree初始化
a
,所以当用户传入0时,它可能会转到
UINT\u MAX
?不,不太可能。设计模式描述设计问题的解决方案。类不需要涉及。@Fernandes到目前为止,我认为这里没有设计问题,没有问题的背景,因此没有解决方案。评论不是关于你说它不是设计模式。这是关于你为什么说它不是一个设计模式。您给出的原因无效,因为这不是决定什么是设计模式的原因。它类似于无符号整数,但有一些调整。问题是名称是什么。通过阅读这个被接受的答案,我希望知道这个名字是什么。那么,这种技术的名称是什么?
class MyType
{
public:
    A ( unsigned _a ) : a (_a-1)
    {

    }
    operator unsigned& () 
    {
        return a;
    }
    operator const unsigned () const
    {
        return a;
    }
    unsigned a; 
};