码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++基础----string, vector, array类

时间:2018-09-03 02:35:23      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:拷贝   执行   继承   参数   元素   接收   构造   关系   声明   

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

 

值初始化

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

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

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

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

 

默认初始化

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

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

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

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

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

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

 

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

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

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

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

C/C++基础----string, vector, array类

标签:拷贝   执行   继承   参数   元素   接收   构造   关系   声明   

原文地址:https://www.cnblogs.com/logchen/p/9576336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!