C++学习:从C到C++(INF)想哪写哪

1.enum 枚举类型 (不能是整形字符型等等的文字常量)

enum <类型名> {<枚举常量表>};
eg:
enum status {ERROR, NOTFOUND=404, SUCCESS}

枚举常量占用内存的大小等于整形数,代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,缺省状态下,这个整数就是所列举元素的序号,序号从0开始。 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按缺省方式取值,而指定值之后的枚举常量按依次加1的原则取值。 各枚举常量的值可以重复。例如:

enum fruit_set {apple, orange, banana=1, peach, grape}
//枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。

enum week {Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat};
//枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。

亦可类型与变量同时定义(甚至类型名可省),格式如下:

enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat} weekday1, weekday2;

这样定义后的类型就可以直接用于定义变量了:

status sys_status

定义了变量之后和其他变量的使用方法几乎没有差异

2.作用域限定符::
在C++中代表了作用域或从属关系,运算符中等级最高,共分为3类:
1)global scope(全局作用域符),用法(::name)。也即是调用了全局变量name
2)class scope(类作用域符),用法(class::name)。就是调用了class中的name
3)namespace scope(命名空间作用域符),用法(namespace::name)。调用了namespace命名空间中的name

3.单冒号:
加进来纯粹是因为刚接触的时候总是和双冒号混,其实并没有什么太大的关系。单冒号一般用于表示类访问修饰(可见性):

public:
   int foo(int a){}
 
private:
   int a;
   std::string s;

一直到下一种可见性出现都意味着属于上一种可见性
或者用来表示继承方式:

class 派生类名 : 继承方式 基类名
{
     派生类的成员
};

继承方式:public,private和protected,默认处理是public
还有一些琐碎的参见网友大大蜗牛写的https://blog.csdn.net/dajiadexiaocao/article/details/81776364

4.引用&
对某一个目标另起一个别名,对别名操作即是对变量本身进行操作

int a=10;
int rea=a;
rea=199;

此时a也就等于199了
应用方面引用本身可以作为函数的参数

void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用
{ int p; p=p1; p1=p2; p2=p; }

这种形式写出来的交换函数其实直接将原值进行交换,相当于传了指针,但这样相比直接传指针可以提升效率。
同时也可以使用常引用模式

const 类型标识符 &引用名=目标变量名;
const Process::ImportantData&Data;
//引入了Process中的ImportantData类型的Data变量,从而Data不能被更改

这样引用进来的数据被视为const类型,从而不能被修改,保证了这条引用数据的安全性。

也可以让引用来做函数的返回值,函数定义时要

类型标识符 &函数名(形参列表及类型说明)
{函数体}

这样做的好处是在函数执行过程中并不在内存中存放任何这个被返回值的副本,但是需要注意遵守以下规则:
1)不能返回局部变量的引用。
2)不能返回函数内部new的内存的引用。
以上两点都是因为引用具有一定的时效性,会导致函数出现内存泄漏或者状态未知。
3)当要返回类的成员的引用的时候最好以const形式返回。目的是为了保证函数的功能,使这一变量不被可能存在的相关其他业务逻辑篡改
4)可移步学习https://www.cnblogs.com/mlgjb/p/8821340.html

之后补上4,5其他的
待更

你可能感兴趣的:(C++)