zoukankan      html  css  js  c++  java
  • C++学习日常——little tips

    C++学习日常——little tips

    • 关于类的构造函数

    单参数的构造函数,应该加上explicit关键字,防止隐式转换。

    #include <iostream>
    
    using namespace std;
    class myString {
    public:
        myString(size_t size) { //单参数构造函数  正确写法:explicit myString (size_t size){
            _size = size;
            _ptr = (char *)malloc(size + 1);
        }
        int getSize(){
            return _size;
        }
        // explicit myString(size_t size, char* ptr = (char*)malloc(10)){ //除第一个参数外,其余参数有默认值的构造函数
        //     _size = size;
        // }
    private:
        int _size;
        char *_ptr;
    };
    
    int main() {
        myString str1(20);  //合法,匹配第一个构造函数,为str1分配20字节内存
        myString str2 = 10; //本该不合法,但发生隐式转换,为str2分配10字节内存
        cout << str1.getSize() << endl;  //20
        cout << str2.getSize() << endl;  //10
    }
    

    为阻止本不合法的myString str2 = 10这样的实例化操作,应在只有单参数和只有单参数无默认值的构造函数前加explicit关键字,取消构造函数隐式转换。explicit myString(size_t size){...}

    • 关于const的问题

      • 在确定函数不应改变或重新赋值类内成员时,应在成员函数后加上const关键字

      • const为左结合

        例:

        A:int const * p = &a;

        B:const int * p = &a;

        C:int * const p = &a;

        AB含义相同,都声明一个指向常量整型的指针;而C声明一个指向整型的常量指针。

      • 模板相关:const和constexpr

        主要作用:用编译时间换取运行时间。编译器使得符合条件的表达式在编译时就获得该有的常量

        image-20210424142425023

  • 相关阅读:
    微前端的那些事儿
    网络是怎样连接的 作者户根勤 交流论坛
    数据结构与算法学习
    cpu读取指令时读取的长度
    小程序开发
    npm 安装 chromedriver 失败的解决办法
    Git:代码冲突常见解决方法
    Android通过Chrome Inspect调试WebView的H5 App出现空白页面的解决方法(不需要FQ)
    pm2
    多媒体技术及应用
  • 原文地址:https://www.cnblogs.com/bear-Zhao/p/14695489.html
Copyright © 2011-2022 走看看