zoukankan      html  css  js  c++  java
  • C/C++基础----类

    • IO类属于不能被拷贝的类型,因此只能通过引用来传递。同时读取和写入操作都会改变流的内容,所以接收的是普通引用。
    • 类内的友元声明仅仅指定了访问的权限,需要在友元声明之外再专门对函数进行一次声明。
    • 可变数据成员永远不会是const,即使它是const对象的成员。
    • 友元关系不存在传递性,父类是友元类,子类不继承。
    • 类在声明之后定义之前是不完全类型。可以定义指向这种类型的指针或引用,也可以声明以不完全类型作为参数或者返回类型的函数。
    • 成员初始化顺序与其在类定义中出现的顺序一致。
    • 委托构造函数,使用类内其他构造函数执行其初始化过程,如果被委托的构造函数体有代码,执行完这些代码才将控制权交还给委托者,执行委托者的函数体。
    • 编译器只会自动进行一步类类型转换
    • explicit构造函数只能用于直接初始化,而不能用于拷贝形式的初始化。但是仍然可以显式地进行转换。

    值初始化

    int型初始化为0,string初始化为空串。

    (1)在数组初始化的过程中,如果提供的初始值数量少于数组的大小,剩下的元素会进行值初始化;

    (2)当我们不使用初始值定义一个局部静态变量时;

    (3)当我们通过书写形如T()的表达式显示地请求值初始化时;

    默认初始化

    定义变量时没有指定初始值,默认值到底是什么由类型决定,跟定义的位置也有关系。

    函数体之外的被定义成0,定义在块作用域内部的内置变量,值是未定义的。不能直接使用

    (1)当我们在块作用域内不使用任何初始值定义一个非静态变量时,

    (2)当一个类本身含有类类型成员且使用合成的默认构造函数时;

    (3)当类类型的成员没有在构造函数初始值列表中显示地初始化时;

    一个类对象进行默认初始化和值初始化,必须要有相应的默认构造函数。

    聚合类,可以使用花括号括起来的成员初始化列表

    所有成员public,没有定义任何构造函数,没有类内初始值,没有基类,没有虚函数。

    通常情况类的静态成员不应该在类的内部初始化。除了const static或者constexpr static不需要分别定义。

    即使常量静态数据成员在类内被初始化了,也应该在类外部定义一下该成员。

  • 相关阅读:
    IIS处理Asp.net请求和 Asp.net页面生命周期
    帝国CMS实现一二级导航及其高亮
    dsoframer.ocx 遇到64为系统
    实现可编辑的表格
    delegate()
    当前页面高亮的方法!
    简单的js版tab
    js判断最大值
    解决chrome下的默认样式!
    纯js点击隐藏相邻节点
  • 原文地址:https://www.cnblogs.com/logchen/p/9576336.html
Copyright © 2011-2022 走看看