C++枚举类型,模板类

1、定义枚举类型

//定义枚举类型,其中对应的分别是 0 1 2 3 4。。。

enum spectrum {red, orange, yellow, green, blue};
spectrum band;
  • 枚举类型的赋值只能是定义的成员之一
  • 枚举类型中没有算数运算
band =red;        //合法 成员之一
band=20;          //不合法,非枚举成员
++band;           //不合法
band = blue + 1;  //不合法
band = 2//不合法
band = (color)2;  //合法
  • 自定义枚举类型初始值,未指定默认从0开始递增
enum bit { one =1; two =2, four =4, eight =8};

2、注意 new和 delete 的配对使用,防止内存泄漏,防止两次释放同一个区域的错误。

3、静态联编:静态数组 ,在编译时候确定数组的大小;
动态联编:动态数组,运行时候确定大小

int * psome =new int[10];

delete [] psome;  //释放数组

4、无法使用sizeof 获得 动态数组的大小

int a = 10;
int * b = new int;
int c[10] = { 1, 2 };
int *d = new int[15]; 
cout << "sizeof a :" << sizeof(a) << endl;
cout << "sizeof b :" << sizeof(*b) << endl;
cout << "sizeof c :" << sizeof(c) << endl;
cout << "sizeof d :" << sizeof(*d) << endl;

image

5、自动存储,静态存储,动态存储

-自动存储 ,也就是局部变量,生命周期在一个代码块内 {},栈上建立

如下的代码块中,每次循环重新生成一个变量,其声明周期只在 花括号内
while (1)
{
    int a =4;
}

-静态存储 static 堆上建立
-动态存储 使用new ,生命周期不受控制

6、

数组的替代 模板类 vector array

vector
- 初始长度可以指定为0,长度可以变化
- 但是效率低
- 存储在栈中

#include <vector> //头文件
...
vector<int> vi;
int n=6;
vector<double> vd(n);//可以使用变量制定生成的数组长度

array
- array的长度固定,不能使用变量定义长度
- 存储在堆中
- array之间可以直接赋值运算

#include <array>
...
array<int,5> ai;
array<double, 4> ad ={1.2, 1.4, 6.7, 1.8};

array<double, 4> ac=ad;

7、逗号运算符结合两个表达式, 使其只占用一个表达式的位置

for (int i=0; i<5; i++)
    int j=0, double k=1.0; //可以结合两个变量定义

cata  =17, 240; 
cata2 =(17,240);

逗号运算符,使得前面的有优先级,而括号使得后面的那个优先级更高

int cata,cata2; 
cata = 17, 20;
cata2 = (17, 20);
cout << "cata :" << cata << " cata2: " << cata2 << endl;

image

8、string 类的对象可以直接比较字符串,但是C语言风格的需要使用strcmp来比较两个字符串+

9、基于范围的for 循环 ,其中括号不能省略

double prices[5] = { 3.44, 1.99, 3.5, 4.9, 2.9};
for (double x : price)   
{
    cout << "xx : " <<x <<endl;
}

10、指针数组存储字符串; 二维数组存储字符串

const char * cities[2] =
{
    "Gribble City",
    "New Gribble"
};

//二维数组的方式存储, 限定单个长度不超过24
const char  cities[2][24] =
{
    "Gribble City",
    "New Gribble"
};

11、switch 表达式中必须使用 整形表达式,int char 枚举类型等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值