C/C++

二十一、       枚举类型

       枚举定义的格式如下:

              enum 枚举名{枚举元素1,枚举元素2,……};

       没有指定值的枚举元素,第一个枚举成员的默认值为整型的0。对于以指定的值,后续枚举成员的值在前一成员上加1,以此类推。

       *枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

       *枚举系统本身由系统定义了一个表示序号的数值,从开始顺序定义为0,1,2,3,4,…

       *只能把枚举值赋予给枚举变量,不能把元素的数值直接赋予给枚举变量。

       *如一定把数值赋予枚举变量,则必须用强制类型转换。

       *还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

       *枚举中若一元素被赋值,则气候的元素值依次在原值上递加1.

二十二、       siezof函数

       在Pascal语言中,sizeof()是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在C语言中,sizeof()是一个判断数据类型或者表达式长度的运算符。

       一般的,在32位编译环境中,sizeof(int)的取值为4。

       在32位计算机中,一个指针变量的返回值通常是4(注意结果是以字节为单位),在64位系统中指针变量的sizeof通常为8。

      下面的c3,c4值应该是多少呢

1

2

3

4

5

6

7

8

void foo3(char a3[3])

{

int c3=sizeof(a3);//c3==

}

void foo4(char a4[])

{

int c4=sizeof(a4);//c4==

}

也许当你试图回答c4的值时已经意识到c3答错了,是的,c3!=3。这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo3时,程序会在栈上分配一个大小为3的数组吗不会!数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。

       sizeof:返回这个数组所有元素所占的空间,包括“\0”;

       strlen:不区分指针还是数组,返回其长度,不包括“\0”

       不允许指针相加,两个地址相加无意义也可能越界,所以规定不允许指针相加。

二十三、       C++是面向对象的编程

       特征为:封装性;继承性;多态性。

       C语言是面向过程的编程。

       面向对象的基本原则是:

1、 单一职责原则;

2、 开放封闭原则;

3、 里氏替换原则;

4、 依赖倒置原则;

5、 接口隔离原则。

二十四、       vector函数

       Vector类 是在 java 中可以实现自动增长的对象数组,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

       vector初始化方式:

1、 vector<int>v(10);表示size为10的vector,每个元素执行默认初始化;

2、 vector<int>v(10,1);表示创建size为10的vector,每个元素初始化为1;

3、 vector<int>v{1,2,3,4};表示创建size为4的vector,元素的值分别为1,2,3,4.

4、 vector<int>v;表示创建size为0的vector。

例:对于string=”hello”;初始化

       vector<string>s({“hello”})   //大括号表示这是一个一维数组,第一个元素为“hello“。

       vector<string>s(1,”hello”); //结果同上,表示数组中只有一个“hello”

       vector<vector<string>>s({{“hello”}});       //两个大括号表示这是一个二维数组,其中第一行第一列的元素为“hello”。

       vector<vector<string>>s(1,{“hello”});       //结果同上,表示数组中第一个元素为{“hello”}。

二十五、       构造函数被调用的三种情况

1、 定义一个对象时,以本类另一个对象作为初始值,发生复制构造;

2、 如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;

3、 如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函数,此时发生复制构造。

posted @ 2020-06-11 10:59  烟火流沙  阅读(149)  评论(0编辑  收藏  举报