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

引入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关键字,该关键字只出现在类内部的声明语句.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容