美文网首页
c++基础知识学习-类(class)

c++基础知识学习-类(class)

作者: 屋顶上的橡皮人 | 来源:发表于2016-05-30 09:21 被阅读48次

    引入this

    ** this是一个常量指针(const pointer),因此不允许改变this中保存的地址 **

    const成员函数(常量成员函数)

    ** 常量对象,以及常量对象的引用或者指针都只能调用常量成员函数 **

    类相关的非成员函数

    ** 如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件中. **

    构造函数

    • 构造函数不能声明为const
    • 编译器只有在发现类没有生成任何构造函数时,才会自动生成默认的构造函数.
    • 如果类中含有复合类型(指针或者引用)时,执行默认的构造函数可能为得到无法确定的值.
    • =default的含义:c++11标准中可以使用default来显式要求编译器生成默认的构造函数.
    类名()=default;//该构造函数不含有任何实参,因此是默认的构造函数.
    
    • 构造函数初始值列表(constructor initialize list)
      在构造函数参数列表和函数体({})之间使用:号进行分隔,各数据成员之间使用,号进行分隔.
    • 在类内定义的vector和string数据成员,可以使用系统默认的拷贝/赋值/和销毁,而不用考虑内存管理的问题,所以能用vector和string的,尽量用vector和string来代替array和char*吧.
    • ** struct和class的区别 **
      struct和class都可以定义类,区别在于访问权限.
    • ** friend(友元) **
      如果需要其他类或者函数访问类的非公有成员(private或者protected),可以在类中声明其他类或者函数为友元(friend关键词).
      1. 要注意的是,友元的声明仅仅是指定了访问权限,不受访问关键词(public/private/protected)的约束.但友元的声明并不是通常意义的声明.如果我们希望类的用户能够调用某个友元函数,那么我们必须在类的友元声明之外对该函数在额外声明一次. **
      2. 如果一个类定义了一个友元类,则友元类可以访问该类的所有非公有成员.
    • ** mutable声明 **
      如果我们希望在const成员函数中改变某个数据成员,最好在该数据成员的声明前加入mutable关键字.
    private:
        mutable size_t access_str;
    
    • ** 委托构造函数 **
      c++11新标准中制定的,简单的说就是该构造函数通过其他的构造函数执行初始化操作.
    • ** 聚合类 **
      如果一个类满足如下条件,称为聚合类:
      1. 所有成员都是public的
      2. 没有定义任何构造函数
      3. 没有类内初始值
      4. 没有基类,没有virtual函数
        聚合类通过使用{}来进行成员初始化,要注意的是,必须保证顺序是一致的.
    • ** 静态成员(static memeber) **
    1. 使用作用域运算符::访问静态成员.而且,最重要的是,类的对象可以直接访问该类的静态成员,而不用作用域运算符(::)
    2. 在类的外部定义静态成员时,不能重复static关键字,该关键字只出现在类内部的声明语句.

    相关文章

      网友评论

          本文标题:c++基础知识学习-类(class)

          本文链接:https://www.haomeiwen.com/subject/urgqdttx.html