const,reference,struct

引用必须初始化,并且用一个左值初始化:

int& i = 1;//error, 1不是左值

除非:

const int& i = 1;//ok, 等价于先将1赋给一个临时变量,在将临时变量赋给引用初始化。

 

(全局变量声明但是未定义的时候,默认初始化为0 。局部变量或者申请内存的变量则不会默认初始化)


 

struct 和 class 差不多,在声明后,(即使没有定义),在不需要知道其size或者成员的情况下(如声明一个指向它的指针),都可以使用;如果需要知道其size或者具体成员情况,则必须定义后才能用。

struct在开始声明就可用,不是声明结束才能用,如:

struct link; //to be defined later

struct  point

{

point* pre;

point* successor;

link*  pp;

};

struct link

{

link* self;

};

以下递归声明方式,编译器无法确定结构体大小,如此声明不行

struct point

{

point obj;

};

另外,声明的时候,class,struct,union,enum 这几种类型都可以和 不是这种类型的变量重名,如

class  same{};

int same; //valid

此种情况合法,但是在用到class类的时候,一定每次都要在前面加上前缀:class same,而整形的same则不需要加前缀。


另外,两个struct即使结构完全一致,也不能互相赋值,

如: struct s1{int i;}; 

struct s2{int i;};

s1  a;

s2  b = a; //error, type mismatch





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值