今天没有继续学新内容,但巩固了一下之前学的
(1)对一个错误的思考(error C2662: “A::getPointer”: 不能将“this”指针从“const A”转换为“A &”
)
#include <iostream>
using namespace std;
struct A
{
int v;
A(int vv):v(vv) { }
const A * getPointer()const{//这样是正确的
return this;
}
};
int main1()
{
const A a(10);
const A * p = a.getPointer();
//p->v=2;
cout << p->v << endl;
return 0;
}
第一个const:主要是因为main函数里有一个const A *p=a.getPointer,说明a.getPointer返回的是一个常对象指针
第二个const:我的理解是,该函数必须是常成员函数,因为它返回的是一个常成员指针。
(2)对定义引用函数的理解
如
#include <iostream>
using namespace std;
class A {
public:
int val;
A(){}
A(int i ){
val=i;
}
A &GetObj(){ //注意这行
return *this;
}
};
int main()
{
int m,n;
A a;
cout << a.val << endl;
while(cin >> m >> n) {
a.GetObj() = m;
cout << a.val << endl;
a.GetObj() = A(n);
cout << a.val<< endl;
}
return 0;
}
A &GetObj(){ return *this; }
这个函数有了 ‘&’,所以GetObj()就相当与那个对象本身!
没有引用符时只是一个复制!
(3)进制、二进制数的编码表示、定点数和浮点数
Ⅰ、进制,主要是十进制小数转换为二进制,联想整数转换的公式,小数就是把基数R放在分母了,所以是不停地乘2取整
Ⅱ、编码:
原码、反码、补码
首先对有符号数来说,首位是符号位,0-正 ;1-负
补码即 一个数的机器数非符号位取反(此时是反码),再加1;可以发现,补码表示时,0只有一种表达方式00000000(以8位为例),而原码表示时有00000000和10000000两种。因为对补码来说10000000取反(注意符号位不变)后是11111111 再加1后第9位自动丢失(或者说mod了),且使用补码是,加减法统一为加法了!
Ⅲ定点数和浮点数
定点数:通常用来表示纯整数或者纯小数,这样只要把小数点放在最右边或者最左边了
浮点数: