正当的理由

来源:互联网 发布:淘宝店怎样做推广 编辑:程序博客网 时间:2024/05/02 01:06

有一些正当的理由,最终使函数或类。例如,最终最常见的用途是确保一个不可变类保持不变。一个不可变类是专门设计的类的状态不能被创建后,改性。没有最终的标识符,派生类可以使类成为可变的功能。如果基类最终的不能将它的子类,这是不可避免的

然而,一般来说,除非你有很好的理由,最后通常应该避免使用。如果你使用关键字文件的原因因为它可能不是很明显的继承你的代码的人

默认

默认情况下,C++将提供一个默认构造函数,拷贝构造函数,赋值操作符(==操作符)和析构函数。如果你为你的类的所有这些功能替换版本,C++没有提供默认版本。然而,在C + + 11,你现在可以指定您希望编译器提供一个默认的吧。这是通过原型的功能和使用默认的说明符

1

2

3

4

5

类Foo

{

foox//自定义构造函数

foo() =默认/编译器提供一个默认构造函数类Foo

}

默认的说明符仅可用于与具有默认功能

删除

比默认的说明符更有用的是删除说明符,它可以用来禁用功能被定义或叫。一个最好的使用删除说明符使得一类不可复制

1

2

3

4

5

类Foo

{

Foo& operator=const Foo&=删除/ /禁止使用赋值运算符

Fooconst Foo&=删除/ /禁止复制构造

}

删除符也可以用来与特定的参数,确保成员函数不叫。比如说呢

1

2

3

4

5

类Foo

{

void foo//可以创建foo()用长长的

void foo长)=删除/不能创造它具有更小的东西

}

在上面的例子中,如果你试图调用foo和char,int,或短,长,这些都将被隐式地转换为长,然后将匹配foo(长)。因为foo长)已被删除编译器将误差

如果你想让你的只能被称为特定的数据类型您可以关闭的隐式转换完全采用模板函数匹配,没有明确定义的一切

0 0
原创粉丝点击