Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > C++Primer读书笔记三
【标  题】:C++Primer读书笔记三
【关键字】:C++Primer
【来  源】:http://www.cublog.cn/u/19481/showart.php?id=133999

C++Primer读书笔记三

Your Ad Here
第3章 C++数据类型
 
1,变量初始化
C++支持两种变量初始化形式。
形式1:使用显式的赋值符号
 int ival = 1024;
 string str = "string";
形式2:隐式赋值,初值置于括号内
 int ival(1024);
 string str("string");
每个内建数据类型都支持一种特殊的构造函数语法将对象初始化为0
如:
 // ival, dval分别被设置成0和0.0
 int ival = int();
 double dval = double();
 
2.为了清晰起见,定义指针时候,一般将*靠近变量名,而不是类型。
如: float fp, *fp2;
 
3.一个指针变量不能存放一个非地址值,也不能被赋予其它不同类型对象的地址
值。
void* 类型的指针可以被赋予除函数指针外的任何数据类型的指针值。
 
4.const限定符
(a)假设有如下定义:
 const double cdval = 3.50;
 double *ptr = (double*)&cdval;
我们不能直接修改cdavl的值,但是可以通过ptr来间接修改。如:
 *ptr += 0.5;
(b)假设定义了常量pi
 const double pi = 3.14159;
以下赋值哪个是合法的?
 1. double *pb = π
 2. double *const cpb = π
 3. const double *pcb = π
 4. const double *const pcdc = π
 5. const double *&prcd = π
 6. double *const &prdc = π
 7. const double *const &prcdc = π
(1)不合法,&pi为指向const double的指针,而左边是double *, 不能从
const double* ----->double*. 反过来则可以,即限定符少的可以向限定符多的
转(当然这里限定符应当兼容)。
(2)不合法。不能完成转化const double*----->double *const 。
(3)、(4)均为合法。因为赋值号左边分别为const double* 和
const double*const  包含右边的类型,所以类型兼容。
(5)不合法。不能完成转化const double* ---->const double*&.  因为=右边&pi
此时是个指针常量,所以=左边的应用应该是一个指向一个常量指针的引用,指向
的常量指针又是指向一个const double对象。所以=号左边的引用应该为
const double *const& prcdc = &pi即式(7).
(6)不合法。不能完成转化const double* ---->double *const&.
(7)合法。 已经在(5)中解释。
 
5.引用(reference)
引用允许象指针一样间接操作对象,但不需要使用指针的特定语法。
关于引用应该注意:
(a)引用必须被初始化。
(b)一旦定义了引用,该引用不能再被指向另一个对象。
(c)所有作用与引用的操作都实际地作用于它所指的对象上,而不是引用本身。
(d)不允许定义引用数组。
(e)一个指向引用的指针是不合法的。
 
6.typedef
typedef char *cstring;
extern const cstring cstr;
这里cstr的类型是什么?const char *cstr吗?
答案是否。
cstr的类型应该是char *const.
const修饰cstr的类型,cstr是一个指针,所以上述声明表示的意思是:声明一个
const 指针cstr,它指向一个char对象.
 
7.volatile
使用volatile限定符的一个重要目的是通知编译器,对象可以以编译器检测不到
的方式改变。因此,编译器不会强制优化与此对象(volatile修饰的对象)相关的
代码。
 
8.this指针
this指针在类内部被自动设置成能寻址左边类对象的指针,这个成员函数通过左
边对象被调用。如:
obj.fun(); // 假设obj是某个类的对象,fun()是该类的一个公有函数。
这里this指针就被自动设置成指向obj对象的指针。
通过*this我们可以访问到由this指向的实际对象(这里是obj)。

 
Delphi编译错误中文手册:【上一篇】
C++ Primer3rd读书笔记二:【下一篇】
【相关文章】
  • C++Primer读书笔记四
  • 看 c++primer 后的一个问题
  • 今天开始看C++primer电子版
  • 还是C++Primer,头疼
  • 【随机文章】
  • source或.与./
  • 傻瓜一次安装WindowsNT(2000/XP/2003)+Apche+PHP+MySQL+Perl
  • 使用FAQGenie迅速制作“常见问答”网页
  • 也谈Fireworks像素化文字的制作方法
  • SWsoft发布升级的Plesk主机管理软件
  • glRasterPos和glReadPixels
  • WAP技术入门
  • 3ds Max 怎样制作鼻子
  • 管理打印作业
  • 了解Cisco路由器--连接一个终端到Cisco路由器
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.