• c++ Primer


    顶层const

    1)int  * const p1 顶层const ;指针p1是常量指针,指向固定,可以通过它改变指向的内容;

    2)const int * p2  底层const ;指针p2指向不固定,不可以通过它改变指向的内容,等同于指向常量对象,其实对象不一定是常量对象;

    2、执行拷贝操作,左右对象必须具有相同的底层const,或者两个对象的数据类型必须能够转换;一般来说,非常量可以转换为常量,即const int* = int* 成立,const int &=int成立;

    3、执行拷贝操作,常量是顶层const还是底层const区别明显;顶层const不受影响;即int =const int 成立;const int*=const int const *成立;

     函数默认

    1)一旦某个形参被赋予了默认值,其后面的所有形参都必须有默认值;

    2)多次声明同一个函数合法,不过在给定作用域中,一个形参只能被赋予一次默认实参,换句话说,后面的声明只能为那些没有默认值的形参添加默认实参,而且右侧所有形参必须有默认值;

    string screen(int ,int ,char a='k');

    string screen(int c=1 ,int d=2 ,char);

    3)初始化时,只能省略尾部实参;重新指定实参的形参左侧必须都重新指定实参,因此让经常使用默认值的形参放在尾部;

    构造函数与初始化

    初始化:

    1、可以通过构造函数初始化;

    2、类内初始化:声明时,直接初始化:=或者{ }初始化;

    inline内联函数 定义放在头文件中;

    const 类内函数:函数体内的this指针也是const的;返回的类型也是const;

    mutable可变数据成员,在const函数体中仍然可以修;改可变数据成员;

    友元类成员函数,

    1)定义顺序:

    (1)友元类声明与定义,其中友元函数只能先声明,不能定义;

    (2)主类声明与定义,包括对友元类函数的友元声明;

    (3)友元函数的定义;因为此时才可以使用主类的成员;

    2)对于类的重载函数,需要每个分别友元才有效;因为重载函数是不同的函数;

    3)友元函数必须在类外声明,否则主类函数不可以调用友元函数;就算友元函数是在主类中声明和定义的,也不可以主类中别的函数调用;

     类的作用域:

    1)在类的作用域外,类的不同成员或数据只能由类的对象、引用、指针使用成员访问运算符来访问;

    2)类名以后为类的作用域;

    3)在类外定义函数时,如果成员函数的返回类型是在类中定义的,需要在返回类型前加上类名+范围限定符;

    4)解析名字查找原则

    一般名字查找原则:

     类中名字查找原则:

     

    上面的处理方式只适用于成员函数体中使用的名字,对于函数体返回类型或者其参数列表中使用的名字,都必须在使用前确保可见;

    函数体中名字查找原则:

    函数体中名字会隐藏类成员中的名字,不过可以通过加上类的名字或者显式地使用this指针来强制访问类成员;

  • 相关阅读:
    20155334 2016-2017-2 《Java程序设计》第四周学习总结
    20155334 2016-2017-2 《Java程序设计》第三周学习总结
    20155334 2016-2017-2 《Java程序设计》第二周学习总结
    20155334 2016-2017-2 《Java程序设计》第一周学习总结
    虚拟机与Linux的初体验
    20155334的第二次随笔
    使用Maven工程
    观察者模式(observer)
    GreenPlum之进程会话管理篇
    Linux下crontab命令添加Kettle作业定时任务
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/10307406.html
Copyright © 2020-2023  润新知