zoukankan      html  css  js  c++  java
  • NO.3: 尽量使用const

    1.尽量使用const修饰不会赋值操作的变量,防止 "无意义行为"

    2.const成员函数遵守: bitwise constness 法则(只要函数内部不改变成员变量的,都是允许const修饰函数的)

    3.如果某些成员在const函数内部总是会被改变 可以在变量声明处添加 “mutable”声明为多变的(bitwise constness允许)

    4.在const成员和non-const成员代码重复性大的情况,可以使用non-const成员调用const成员,减少代码复用性

    C/C++:

     1 //Effective C++ NO.3
     2 
     3 
     4 class Demo
     5 {
     6 private:
     7     std::string str_;
     8 public:
     9     Demo(){};
    10     Demo(const std::string& str):str_(str)
    11     {
    12 
    13     }
    14 
    15 
    16     const char& operator[](std::size_t size) const
    17     {
    18         std::cout<<"const char& operator[](std::size_t size) const"<<std::endl;
    19         return str_[size];
    20     }
    21 
    22     char& operator[](std::size_t size)
    23     {
    24         std::cout<<"char& operator[](std::size_t size)"<<std::endl;
    25         //首先把*this添加const调用 "const op[]",之后把返回值去const
    26         return const_cast<char&>(static_cast<const Demo&>(*this).operator[](size));
    27     }
    28 
    29 };
    30 
    31 
    32 
    33 
    34 int main(int argc, char **argv)
    35 {
    36     Demo A("Hello Wolrd");
    37     A[0]='K';
    38     std::cout<<A[0]<<std::endl;
    39     return 0;
    40 }
  • 相关阅读:
    UVA11367 Full Tank?
    不均衡样本集问题
    NLP interview
    Linux 指令
    Python 趣题
    Grid Illumination
    动态规划-Minimum Cost to Merge Stones
    Contest 141
    Python join()方法
    Single Number
  • 原文地址:https://www.cnblogs.com/xuaidongstdudyrecording/p/7257229.html
Copyright © 2011-2022 走看看