VC从入门到精通中的5.12节
发表在C语言图书答疑 2009-11-13
是否精华
版块置顶:
你好,我在学习VC从入门到精通中的第5章内容,在第116页中讲到了将类对象定义为常量指针,我想问一下,这里的常量指的是指针,还是对象的数据成员呢?如果指的是指针,就是说指针所指的对象的地址不能改变,但成员数据可以改变;如果指的是数据成员,就是说指针可以指向任意的同种的类对象,但对象的成员数据不能改变和赋值。应该怎么理解呢?敬请指点!!!  谢谢。


另外,在第4章介绍命名空间时,如果在#include <iostream.h> using namespace std::cin;这时,我就对命名空间和头文件有点混淆了,我想问一下,为什么要定义命名空间,它有什么内涵,怎么理解,使用的时候应该注意些什么呢?
分享到:
精彩评论 2
学分: LV1
2009-11-14
沙发
命名空间,你可以将其理解成,一个很大的作用域。
举个例子来更好解释一下:
  在买东西时,同样是喊出这个东西一块钱,在中国指的是RMB一块钱,不过在美国指的就是一美元。
  那么一个老外在中国卖东西,这个时候你就不知道,他说的是人民币一块,还是一美元。(这差价可挺大的吧,7倍呢~)

而命名空间,就相当于在“一块钱”这个名词前加上了 “人民币”或者“美元”这样的说明。
否则别人就不知道你要使用的是“人民币”还是“美元”了。
学分: LV1
2009-11-14
板凳
如果将二者区分开来,这个问题就迎刃而解了。

1)声明方式不同:
常量指针 :    int * const a;
指针常量 :   int const * a;

2)从名称进行区分:
常量指针:  是一个常量的指针。
指针常量:   是一个指向常量的指针。

3)使用方法区分:(借助上面的声明)
常量指针:
     int b=1;          //声明一个整形变量
     int c=2;
     int * const a=&b;  //指针a指向b ,此后指针a不能再指向其他变量,也就是说指针a只能指向b了。
                        //(另外说明一下,因为只能指向唯一的地址,所以在声明常量指针的同时要对其进行赋值)
     a=&c;             //错误!!!!
     *a=10;            // 正确~ ,此时b的值也被改变为10

指针常量:
     int b=1;     //声明一个整形变量
     int c=2;
     int const *a;//声明一个指针常量
     a=&b         //指向b变量

     *a=10;      //错误!!!!   指针常量是不可以改变,指向变量中的内容的。
     a=&c         //正确~也可以指向c变量
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照