• 高速上手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);
    };
  • 相关阅读:
    Overview | POCO C++ Libraries
    simple.c
    Classes for Writing HTTP Clients in C++ CodeProject
    APScheduler 2.0.3 : Python Package Index
    neon HTTP and WebDAV client library
    HTTP Client C API
    vi编辑器的学习使用(二十一)
    自由软件的定义
    vi编辑器的学习使用(二十三))
    vi编辑器的学习使用(二十二)
  • 原文地址:https://www.cnblogs.com/PROJECT-IDOLPROGRAM/p/9269044.html
Copyright © 2020-2023  润新知