Pencil.C++

更新速度可能会晚于http://blog.csdn.net/bilaopao

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  34 随笔 :: 0 文章 :: 40 评论 :: 0 Trackbacks
12.运算符重载:  &nbs12.运算符重载:
      operator 函数用法:(不能有下列字符:'::','.','*','->','? :')p;   
          1.一般:int class_name::operator <运算符> (形参列表)   (例92)
          2.增量减量运算符:   (例93,94,95,96)
               a.将一个增量运算符重载为前置的成员函数:12.运算符重载:  &nbs
                           int class_name::operator++();
               b.将一个增量运算符重载为后置的成员函数:
                           int class name::operator++(int);12.运算符重载:  &nbs
               c.将一个增量运算符重载为前置的友元函数:
                           int operator ++(class_name&);         
               d.将一个增量运算符重载为前置的友元函数:)    
                           int operator ++(class_name&,int);     
               e.下标运算符:
                           int class_name::operator[](形参)  //只能是非静态成员函数                           operator 函数用法:(不能有下
               f.函数调用运算符: 
                           int class_name::operator()(形参表)//只能是非静态函数,且不可以带有缺省的参数
               g.成员选择运算符:12.运算符重载:  &nbs
                           class_name $/* class_name::operator->();
               h.new delete运算符:
                           void *class_name::operator new(siz_t,<arg_list>);12.运算符重载:  &nbs
                           void *class_name::operator delete(void *,<size_t>);
                   new delete只能被重载为类的成员函数,不能是友元。而且无论是否使用关键字static
                   进行修饰,重载了的new和delete均为类的表态成员函数。p;   
                       对于typedef unsigned size_t;
                   在头文件alloc.h,mem.h,stddef.h,stdio.h,stdlib.h均说明;
               i.友元函数: operator 函数用法:(不能有下
                       可以是一个类的非静态函数,也可以是类的友元函数。
                      {friend complex operator+(complex&,complex&);
                      }; 12.运算符重载:  &nbs
                 以下五种运算符不说明成友元运算符:
                      "=","()","[]","->","type"; 
               j.转换函数: operator 函数用法:(不能有下
                         class_name::operator type();  //type 是任何一个合法的C++的类型名(包括基本数据类型和导出数据类型)以及由关键字const和volatile引出的表达示。)
                                                       //不带任何参数,也无返回值类型,总是返回type的值。只能是类的成员函数,不能说明为友元运算符。
               k.类的赋值运算与运算符重载:列字符:::,.,*,->,? :
                         person & person::operator=(person &p)
                           {dele Name;
                            Name=new char[strlen(p.Name)+1];12.运算符重载:  &nbs
                            strcpy(Name,p.Name);
                            Age=p.Age;
                            Sex=p.Sex;p;   
                            return *this;
                           }
                        典型例题。当用系统自带对象赋值的函数,如果对象里有如 *Name 型的,则赋值后会使两个指针同时指向一个成员元素的地址,当调用析构函数释放时,会释放两次,多释放一次,而产生错误,这个典型例题是用于把一个成员元素复制到另一个对象中,不是单纯移动指针,当调用析构函数时,会释放两次。12.运算符重载:  &nbs
               l.重载函数:系统仅对形参加以区别。
13.虚函数
     一般情况下,指向一个对象的指针,不允许指向另一个对象,但指向基类对象的指针可以指向它的派生类,并可以访问派生类中原基类成员。12.运算符重载:  &nbs
     如果一个函数一旦说明为虚函数,则无论说明它的类被继承了多少层,在每一层中该函数都保持该virturl特性。且可以在派生类中对该函数省略virtual.
     虚函数必须是类的一个成员函数,不能是友元,但它可以是另一个类的友元。虚函数不能是一个静态成员。
     设定绑定方式,使程序具有灵活性,但执行效率低,占用内存多.     operator 函数用法:(不能有下
14.抽象类:纯虚函数
      纯虚函数的一般形式为:virturl 类型名(参数表)=0;抽象类不能申请对象。
15.类属结构:12.运算符重载:  &nbs
       1.函数模板:template <class 模板形参表>                
                返回值类型 函数名(模板函数形参表)
                  {)    
                   函数体;
                  }
             example:p;   
                 template  <class T>
                 void swap(T &.x,T&.y)
                  {T t;列字符:::,.,*,->,? :
                   t=x;x=y;y=t;
                  }
       2.重载函数模板:调用用次序:12.运算符重载:  &nbs
            1)寻找一个完全匹配的函数,找到,调用之。
            2)寻找一个函数模板,将其实例化产生一个匹配的模板函数,找到,调用之。
            3)寻找重载函数中有无通过类型转换后产生参数匹配的函数,若有,调用之。p;   
       3.类模板:template <class 模板形参>
                 class 类模板名
                 {12.运算符重载:  &nbs
                  类体;
                 }
             example:  tempplate <class T>12.运算符重载:  &nbs
                       class stack
                       {private:
                          T *date; 12.运算符重载:  &nbs
                          int top;
                        public:
                          isempty();12.运算符重载:  &nbs
                       }
                       template <class T>
                       {...}   operator 函数用法:(不能有下
16.类模板的友元:
          a.一般的类模板友元函数。
          b.封闭型的类模板友元函数。当用类型参数将类模板实例化为某个具体的模板类时,该类模板所包含的友元函数也将随之实例化。列字符:::,.,*,->,? :
          c.开放型的类模板友元函数。
       例一百二十一。
17.C++的I/O流库 operator 函数用法:(不能有下
    1.  I/O标准流类  
        -----------------------------------------
        c++名字  设备  | C中的名字 | 默认的含义)    
        -----------------------------------------
        cin      键盘  | stdin     | 标准输入
        -----------------------------------------12.运算符重载:  &nbs
        cout     屏幕  | stdout    | 标准输出
        -----------------------------------------
        cerr     屏幕  | stderr    | 标准错误)    
        -----------------------------------------
        clog     | 打印机 | stdprn    打印机
        -----------------------------------------p;   
     2。键盘输入
        cin>>a>>b>>c;  //Ctrl+z终止
        cin.get(char &ch)//从输入流获取一个字符,不忽略空格Ctrl+z终止)    
        cout.put(ch)//输出一个字符       
    EOF//其值为-1,相当于终止符 
        cin.geline(char *buf,int limit,Deline='\n')//buf为一个指针或数组,limit为字符个数,Deline为读取字符指定结束符。作用:从键盘读入一串字符。结束用Ctrl+z.列字符:::,.,*,->,? :
    cin.gcount()//返回getline()刚刚读过的字符个数 
        cin.read(char *buf,int size)//读入指定数目的字符
    cout.write(const char *str,int n)//cout.write("string",strlen("string");则输出全部字符。p;   
    cin.peek()//返回输入流的下一个字符,但是不提取它。
    long(a)//a可以是指针地址,作用,强制转换为十进制数。
    (void*)//ex:char str="abcde";cout<<str;将str为首地址字符串的首地址输出。   列字符:::,.,*,->,? :
18.输入符,提取符重载:<<  >>
     例154 155例题
posted on 2009-04-24 19:33 Pencil.C++ 阅读(236) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理