2.13 c++ 常成员函数、对象

今天没有继续学新内容,但巩固了一下之前学的

(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了),且使用补码是,加减法统一为加法了!
Ⅲ定点数和浮点数
定点数:通常用来表示纯整数或者纯小数,这样只要把小数点放在最右边或者最左边了
浮点数:在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值