Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43030
  • 博文数量: 12
  • 博客积分: 315
  • 博客等级: 一等列兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-25 11:10
文章分类
文章存档

2011年(12)

我的朋友

分类: C/C++

2011-03-04 15:25:44

13.1类定义
1.除了静态数据成员,类的其它成员不能在类体中显式初始化.
class First
{
   int memi=0;//error
}
 
2.友元
友元以friend关键字开头,只能出现在类的声明中.由于友元不是授权友谊的类的成员,其访问不受public,protected和private的限制.
 
3.类声明和定义
类的类头出现,就代表它已经被声明,所以,类定义中可以有该类的指针和引用作为成员;
类体结束,才算一个类被定义,所以,类不能包含自身对象为成员.
 
13.3类成员函数
1.每个类数据对象都有自己的数据成员拷贝,成员函数的拷贝是公用一份,用this指针来区分不同对象
2.类体内定义的函数默认是inline函数;
由于内联函数必须在每个调用它的函数内定义,所以没有在类体中定义的内联函数必须被放在类定义所在的文件.
3.const和volatile成员函数
const成员函数表明该函数不会改变对象的状态(改变类的数据成员)
只有const对象能够调用const成员函数;
只有volatile对象能够调用volatile成员函数
4.mutable数据成员:即使是const的类对象,声明为mutable的数据成员也可以被改变.
 
13.4this指针
1.每个类成员函数都隐含一个this指针,指向被调用对象.非const成员函数的this指针是指向该类类型的指针;const成员函数的this指针是指向const类类型的指针.
2.
在上面代码中,将this指向的对象析构,并在this的原址,构造新的对象,这是可行的做法.这里的new用法称为定位new表达式.
 
13.5static成员
1.static数据成员是该类所有对象共享的数据成员
2.static数据成员只能定义一次,所以其定义,初始化必须在类体外的其它文件
static const数据成员如果是有序型数值,可以在类体内初始化,但仍然要在类体外其它地方定义
3.static成员函数没有this指针,因此在static成员函数内部也不能访问非static数据成员,只能访问static数据成员.
 
13.6成员指针
1.成员函数指针:与普通函数指针有很大区别,成员函数指针首先要被绑定在一个对象或者指针上,获取被调用对象的this指针,然后才能用指针调用成员函数.
使用成员函数指针时,必须先为其制定对象或者对象指针
 
2.static成员指针:因为与具体对象无关,所以static成员指针不需要获得this指针,它就是普通指针.
 
13.7union
 
13.9类域
1.类域内名字解析的特例
1)inline函数的函数体内
2)成员函数的缺省实参(如果实参是非静态数据成员,因为需要绑定对象,会产生错误,所以是静态数据成员才可以)
这两种情况可见性是整个类域
 
2.类体外的静态数据成员定义:在变量名之后的部分属于类域.,因此
const char Account::name[namesize]="hello";//namesize属于类域,所以可以直接使用
类体外的成员定义中,成员名字前的程序文本,不属于类域,因此
Account::Money Account::_interestRate=0.1;//变量名前的类型限定不能直接用Moeny,那里不属于类域
阅读(1415) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~