• c++ 05


    一、单例模式

    二、成员指针
    class Student {
    public:
      string m_name;
      void print (void) { ... }
    };
    1.指向成员变量的指针
    成员变量类型 类名::*指针变量名;
    string Student::*pname;
    pname是一个指向Student类中string类型成员变量的指针。
    指针变量名 = &类名::成员变量名;
    pname = &Student::m_name;
    对象.*指针变量名/对象指针->*指针变量名
    .*  - 成员指针解引用运算符
    ->* - 成员指针间接访问运算符
    Student s (...), *p = &s;
    cout << s.*pname << endl;
    cout << p->*pname << endl;
    2.指向成员函数的指针
    成员函数返回类型 (类名::*指针变量名) (形参表);
    void (Stduent::*pprint) (void);
    指针变量名 = &类名::成员函数名;
    pprint = &Student::print;
    (对象.*指针变量名) (实参表)/
    (对象指针->*指针变量名) (实参表)/
    Student s (...), *p = &s;
    (s.*pprint) ();
    (p->*pprint) ();

    三、操作符重载的基本概念
    c1-(c2+c3)
    c1.sub (c2.add (c3));
    1.操作符和操作符函数
    1)双目操作符:+-*/%...,+=/-=...,<</>>
    L#R -> L.operator#(R),左调右参
        -> ::operator#(L,R),左一右二
    2)单目操作符:-/~/!...,++/--
    #O/O# -> O.operator#()
          -> ::operator#(O)

    3)三目操作符:?:,不能表示为操作符函数
    2.所谓操作符重载,其本质就是根据不同的数据类型,定义相应的操作符函数,以使自定义类型能够与基本类型应用相同或相近的语义进行运算。
    3.能够被重载的操作符的操作数种至少有一个是类类型。
    4.操作符的优先级和结合序不会因重载而发生变化。
    5.操作符的操作数个数不会因重载而发生变化。
    6.除了“()”操作符以外所有的操作符函数都不能带有缺省参数。
    7.并不是所有的操作符都能重载。
    8.不能发明新的操作符。
    x ** y

    四、双目操作符
    1)+-*/
    2)复合赋值:+=/-=
    3)输入输出:>>/<<
    cout << c1 -> cout.operator<< (c1)
    ostream    -> ::operator<< (cout, c1)
    cin >> c1
    istream
    cout << a << endl;
    ~~~~~~~~~
         cout

    五、单目操作符
    1)-/~/!
    2)前缀自增减
    ++i
    3)后缀自增减
    i++
    练习:实现一个3X3的矩阵类M33,支持如下运算:+/*/+=/*=/取负/前++/后--/<<
    1 2 3   9 8 7   30
    4 5 6 X 6 5 4 =
    7 8 9   3 2 1
    9+12+9

  • 相关阅读:
    mysql优化思路
    mysql列类型选择
    mysql 多列索引的生效规则
    Myisam索引和Innodb索引的区别
    mysql创建远程用户并授权
    mysql 索引长度和区分度
    php 内存共享shmop源码阅读
    短链接系统的算法原理
    PHP die与exit的区别
    MySQL建立外键(Foreign Key)
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3780691.html
Copyright © 2020-2023  润新知