• C++ part5


    为啥大三了课少了一点点,做作业的时间反而多了一大堆堆???

    关于protect

    只能被本类或者子类的成员函数,或者友元函数访问。

    友元函数:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    class A{
    public:
        A() : f(3){}
        friend void get(const A &a);	//声明友元函数
    private:
        int f;
    };
    
    void get(const A &a){
        cout << a.f << endl;
    }
    int main() {
        A a;
        get(a); //3
        return 0;
    }
    

    C++类内定义引用数据成员

    references:
    c++之类内定义引用成员

    1、不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
    2、构造函数的形参也必须是引用类型
    3、不能在构造函数里初始化,必须在初始化列表中进行初始化。
    简称:必须使用构造函数初始化列表初始化。

    class A{
    public:
        A(int &ff) : f(ff){}
    private:
        int &f;
    };
    

    struct和class的区别

    references:
    C++的继承权限

    nowcoder

    struct默认继承权限和访问权限为public,class默认继承权限和访问权限为private。

    什么是右值引用,跟左值又有什么区别?

    references:
    从4行代码看右值引用

    nowcoder

    解决的问题:
    右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面:
    1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。
    2. 能够更简洁明确地定义泛型函数。

    概念:
    左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。
    右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。

    左值右值区别:
    1、左值能寻址,右值不能
    2、左值能赋值,右值不能

    另:
    T&& t在发生自动类型推断的时候(如函数模板的类型自动推导,或auto关键字),它是未定的引用类型,如果被一个左值初始化,它就是一个左值;如果它被一个右值初始化,它就是一个右值,它是左值还是右值取决于它的初始化。
    常量左值(const int& a = get())引用能够绑定一个右值。

    template<typename T>
    void get(T &&a){
    
    }
    int main() {
        int a = 1;
        get(a);
        get(1);
        return 0;
    }
    
  • 相关阅读:
    Hexo+Github 搭建一个自己的博客
    vue中sessionStorage存储的用法和问题
    vue 页面刷新
    vue渲染完页面后div滚动条定位在底部
    vue 定义全局函数
    vue filter过滤器用法
    vue中bus.$on事件被多次绑定
    vue中引入jQuery的方法
    vue2.0传值方式:父传子、子传父、非父子组件、路由跳转传参
    vue打包后显示为空白页的解决办法
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12507393.html
Copyright © 2020-2023  润新知