C、C++笔记

1.今天用vc6.0的时候定义变量发生了很奇怪的错误:

error C2275: 'wchar_t' : illegal use of this type as an expression

百思不得姐啊,后来查了一下才知道,C语言不允许随时定义变量,所有定义的变量都只能放在函数开头
,这也是C和C++的一个重要区别!

 

然后还有个乱码问题,vc6.0预编译环境的设置只添加了UNICODE,在工程->设置->C/C++标签下的预处理程序下面加上就可以了

2.(int&)a:将a的引用强制转换为整型,

意思是a所在的内存,本来定义的时候为float类型,并初始为1.0f,  

但现在我要按int类型解释这段内存(也就是说a所在的内存地址中的数据本来是按float型存储表示的,你非要按int型来解释不可)。 

1.0f  

在内存中的存储为  0   011  1111   1   000  0000   0000  0000   0000   0000. 

把他按整型数解释为2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216  

(int&)a 相当于    *(int*)&a     *(int*)(&a)    *((int*)&a)


3.非const引用形参只能与完全同类型的非const对象关联;

非引用形参既不能用const对象初始化,也不能用字面值或产生右值的表达式实参初始化

所以如果使用引用形参的唯一目的只是避免复制,则应该使用const引用形参


4.vector和其他容器类型的形参应该用迭代器传递


5.数组形参会自动转化为指向其第一个元素的指针;

数组实参:非引用形参会被转换成指针,引用形参传递数组本身。在这种情况下,数组大小成为形参和实参类型的一部分,编译器将检查实参的大小与形参的大小是否匹配,如:

void printValues(int (&arr)[10]){...}


6.除了static成员函数,每个成员函数都有一个额外的、隐含的形参this,在调用成员函数时,形参this初始化为调用函数的对象的地址。

const成员函数改变了隐含的this形参的类型(const),所以const成员函数不能修改调用该函数的对象。

const对象、指向const对象的指针或引用只能用于其const成员函数,如果尝试用它们来调用非const成员函数,则是错误的


7.是否将形参定义为const并不影响传递到函数的对象,原因在于实参传递的方式:复制形参时并不考虑形参是否为const——函数操纵的只是副本。函数无法修改实参。结果,即可将const对象传递给const形参,也可传递给非const形参。

因此,值得注意的是,有const引用形参的函数与有非const引用形参的函数是不同的。类似地,如果函数带有指向const类型的指针形参,则与带有指向相同类型的非const对象的指针形参的函数不相同。


8.实参类型转换:等级降序如下:

1)精确匹配

2)类型提升

3)标准转换

4)类类型转换


9.typedef bool (*fn)(const string&, const string&);

该定义表示fn是一种指向函数的指针类型的名字,该指针类型为“指向返回bool类型并带有两个conststring引用形参的函

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值