随笔分类 -  C++重载与类型转换

摘要:前面我们看到由一个实参调用的非显式构造函数定义了一种隐式的类型转换,这种构造函数将实参类型的对象转换成类类型。我们同样能定义对于类类型的类型转换,通常定义类型转换运算符可以做到这一点。转换构造函数和类型转换运算符共同定义了类类型转换,这样的转换有时也被称作用户定义的类型转换。类型转换运算符类型转换运... 阅读全文
posted @ 2014-10-29 08:13 Jessica程序猿 阅读(534) 评论(0) 推荐(0)
摘要:如果类重载了函数调用运算符,则我们可以像使用函数一样使用该类的对象。因为这样的类同时也能存储状态,所以与普通函数相比它们更加灵活。例如:struct absInt{ int operator()(int val) const{ return val<0?-val:val; ... 阅读全文
posted @ 2014-10-27 11:35 Jessica程序猿 阅读(1212) 评论(0) 推荐(0)
摘要:在迭代器类及智能指针类中常常用到解引用运算符(*)和箭头运算符(->)。 阅读全文
posted @ 2014-10-27 11:24 Jessica程序猿 阅读(247) 评论(0) 推荐(0)
摘要:在迭代器类中通常会实现递增运算符(++)和递减运算符(--),这两种运算符使得类可以在元素的序列中前后移动。C++语言并不要求递增和递减运算符必须是类的成员,但是因为它们改变的正好是所操作对象的状态,所以建议将其设定为类的成员。 阅读全文
posted @ 2014-10-27 11:23 Jessica程序猿 阅读(332) 评论(0) 推荐(0)
摘要:表示容器的类通常可以通过元素在容器中的位置访问元素,这些类一般会定义下标运算符operator[]。下标运算符必须是成员函数。 阅读全文
posted @ 2014-10-27 11:20 Jessica程序猿 阅读(325) 评论(0) 推荐(0)
摘要:已经介绍过拷贝赋值和移动赋值运算符,它们可以把类的一个对象赋值给该类的另一个对象。此外,类还可以定义其他赋值运算符以使用别的类型作为右侧运算对象。 阅读全文
posted @ 2014-10-27 11:18 Jessica程序猿 阅读(232) 评论(0) 推荐(0)
摘要:通常情况下,我们把算术和关系运算符定义成非成员函数以允许对左侧或右侧的运算对象进行交换。因为这些运算符一般不需要改变运算对象的状态,所以形参都是常量的引用。 阅读全文
posted @ 2014-10-27 11:16 Jessica程序猿 阅读(358) 评论(0) 推荐(0)
摘要:如我们所知,IO标准库分别使用>>和<<执行输入和输出操作。对于这两个运算符来说,IO库定义了用其读写内置类型的版本,而类则需要自定义适合其对象的新版本以支持IO操作。1重载输出运算符<<通常情况下,输出运算符的第一个形参是一个非常量ostream对象的引用。 阅读全文
posted @ 2014-10-27 11:14 Jessica程序猿 阅读(424) 评论(0) 推荐(0)
摘要:当运算符被用于类类型的对象时,C++语言允许我们为其指定新的含义;同时,我们也能自定义类类型之间的转换规则。和内置类型的转换一样,类类型转换隐式地将一种类型的对象转换成另一种我们所需类型的对象。 阅读全文
posted @ 2014-10-27 11:11 Jessica程序猿 阅读(356) 评论(0) 推荐(0)