chapter 12

(*)  类最简单的定义,定义一个新的类型和新的作用域

(*)  类的初始化列表,初始化顺序和定义的顺序相同,如下图先初始化b,因为它先定义

class B

{

B(): a(0), b(0)

{

}

public:

int b;

int a;

}


(* )  类的this指针:类的成员函数都有一个隐含的形参,即指向该类对象的一个指针,这个隐含的形参为this,当需要将一个对象作为整体引用而不是一个类成员时,则需要返回这个参数this。

(书上例子)

class Screen

{

pubilc:

Screen& move(int x, int y)

{

return *this;

}


Screen& set(char)

{

}

}

可以如下调用:myScreen.move(0, 0).set('#');

在非const成员函数中,this是一个指向类类型的const指针(Screen* const this),可以更改其指向对象的值,但是不能改变其地址。而在const成员函数中,this是一个指向const类对象的const指针(const Screen* const)

class Screen

{

pubilc:

Screen& move(int x, int y)

{

return *this;

}


const Screen& move(int x, int y) const

{

return *this;

}

Screen& set(char){

return *this;

}

}


二者可以重载,const对象只能调用const成员,,但是构造函数无需定义成const


(*)  构造函数可以被重载,单形参构造防止隐式构造用explicit关键字定义构造函数

(*) 友元可以是对象也可以是函数。

友元重载:

extern int store(std::string);

extern void store(int)

class Screen

{

friend int  store(std::string);

}

接受一个函数作为友元,另外一个无法对对象进行访问


(*) static成员只是与类关联,独立于这个类声明的所有对象,其作用域在类作用域内。

static可以私有,全局对象不能作为某个对象的私有成员。

因为static独立于对象存在,static函数没有对象this指针。

static数据成员不能在类中初始化,而const static可以,如:

class B

{

public:

static const int p = 30;

}

static成员类型可以是该类的类型 

class B

{

public:

B test; //error

static B test; //ok

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值