您的位置:首页 > 其它

chapter 12

2015-10-18 16:53 169 查看
(*) 类最简单的定义,定义一个新的类型和新的作用域

(*) 类的初始化列表,初始化顺序和定义的顺序相同,如下图先初始化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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: