zoukankan      html  css  js  c++  java
  • 高速上手C++11 14 笔记1

    1 constexpr

    constexpr关键字可以让已经具备常量返回的函数运用于常量的位置。

    c++14起可以在函数内部使用局部变量、循环和分支等简单语句。

    2 委托构造&继承构造

    委托构造使得避免了多个构造函数调用一个私有函数的丑陋代码。

    class Base {
    public:
        int value1;
        int value2;
        Base() {
            value1 = 1;
        }
        Base(int value) : Base() { // deletgate constructor
            value2 = 2;
        }
    };

    继承构造解决了子类调用父类构造函数时依次传入变量效率低下的问题。

    class Subclass : public Base {
    public:
        using Base::Base; // Inheriting constructor
    };

    由此传参效率问题目前已有一下解决方案:

    1、构造函数的继承构造

    2、inline或macro的代码替换

    3、移动语义、完美转发。(move强制转化为rvalue,forward保留原值的左右属性)

    显式虚函数重载(final&override)

    struct Base {
        virtual void foo();
    };
    
    struct SubClass : public Base {
        void foo();
    };

    以上代码中,subclass的foo方法语义模糊,当base类不得不移除foo方法时subclass的foo依然能够运作,这是非常严重的后果。

    struct Base {
        virtual void foo(int);
        virtual void foo2() final;
    };
    
    struct SubClass : public Base {
        virtual void foo(int) override;         virtual void foo(double) override; // ERR
        void foo2(); // ERR
    };

    拒绝编译器做小动作(default&delete)

    class Magic {
    public:
        Magic() = default; // explicit constructor
        Magic& operator=(const Magic&) = delete; // explicit refuse = operator
        Magic(int magic_number);
    };
  • 相关阅读:
    面试十题(4)
    TS中给接口指定的成员?
    TS中定义泛型接口的两种方式
    ts中泛型的使用
    ts中类的属性的封装
    ts中接口的使用
    自定义hook的步骤
    react中如何使用useReducer?
    react中useContext的使用
    react 中useRef的作用
  • 原文地址:https://www.cnblogs.com/PROJECT-IDOLPROGRAM/p/9269044.html
Copyright © 2011-2022 走看看