您的位置:首页 > 编程语言 > C语言/C++

C++默认的构造函数以及运算符重载关键点

2011-04-08 23:13 267 查看
 1、默认情况下编译器为一个类定义那些构造函数?
如果我们没有定义一个类的默认构造函数,编译器就会自动定义一个函数体为空的构造函数。
另外,编译器还可以自动定义operator =()赋值函数,来进行同一类的对象之间的赋值。
还有,经过测试,编译器还会自动添加 复制构造函数

2、一般情况下,我们把二元操作符定义成非成员函数(但可以是友元函数,这要看是否访问类的内部成员),一元操作符定义为成员函数。如果二元运算符被定义成成员函数,虽然可以减少一个参数,但是要求必须是该类的对象在运算符之前,也就是不满足交换律。所以,一般情况下二元操作符定义成非成员函数。

3、有些运算符必须重载为成员函数,有些则必须重载为非成员函数
C++规定,有些运算符(如赋值运算符,下标运算符,函数调用运算符,类型转换函数)必须定义为类的成员函数;有的运算符则不能定义成成员函数(如流的插入“<<”和提取">>"运算符)。

类型转换函数形式:

operator 类型名()
{实现转换的语句}

注意:函数名前面不指定函数类型,函数没有参数。如:
class Complex
{
   //...
   operator double() {return real;}   
  //...
private:
   float real;
   float imag;
};

4、如果重载了operator +()函数,最好也重载operator +=()函数。

(可以参看另一篇实例文章:http://liuguangtao.blog.51cto.com/2801521/537704)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息