文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档> C++类 学习笔记

C++类 学习笔记

时间:2010-05-31  来源:woods2001

类.

Key Concept: Benefits of Data Abstraction and
Encapsulation
关键概念:数据抽象和封装的好处
Data abstraction and encapsulation provide two important advantages:
数据抽象和封装提供了两个重要优点:

Class internals are protected from inadvertent user-level errors,which might corrupt the state of the object.

避免类内部出现无意的、可能破坏对象状态的用户级错误。
 The class implementation may evolve over time in response to changing requirements or bug reports without requiring change in  user-level code.

随时间推移可以根据需求改变或缺陷(bug )报告来完美类实现,而无须改变用户级代码。

Mutable Data Members
可变数据成员
It sometimes (but not very often) happens that a class has a data member that we want to
be able to modify, even inside a const member function. We can indicate such members by
declaring them as mutable.
                                                                                        
 有时(但不是很经常),我们希望类的数据成员(甚至在 const
 成员函数内)可以修改。这可以通过将它们声明为 mutable 来实现。

A mutable data member is a member that is never const, even when it is a member of a const object. Accordingly, a const member function may change a mutable member. To declare a data member as mutable, the keyword mutable must precede the declaration of the member:
 可变数据成员(mutable data member)永远都不能为 const,甚至当它是 const 对象的成员时也如此。因此,const 成员函数可以改变 mutable
 成员。要将数据成员声明为可变的,必须将关键字 mutable 放在成员声明之前:

例如:

class Screen

{

public:
       // interface member functions

private:
        mutable size_t access_ctr; // may change in a const members
         // other data members as before

};

我们给 Screen 添加了一个新的可变数据成员 access_ctr。使用 access_ctr 来跟踪调用 Screen成员函数的频繁程度:
void Screen::do_display(std::ostream& os) const

{
      ++access_ctr; // keep count of calls to any member function
       os << contents;

}

构造函数

从概念上讲,可以认为构造函数分两个阶段执行:(1)初始化阶段;(2
)普通的计算阶段。计算阶段由构造函数函数体中的所有语句组成。

有些情况下必须使用初始化列表
1.如果类成员对象没有默认的初始化函数
2.如果类成员对象不支持default assign operator=.
以上两种情况下需要使用初始化列表

记住,可以初始化 const
对象或引用类型的对象,但不能对它们赋值。在开始执行构造函数的函数体之前,要完成初始化。
必须对类成员中的引用或const成员使用成员初始化列表

按照与成员声明一致的次序编写构造函数初始化列表是个好主意。此外,尽可
能避免使用成员来初始化其他成员。

static成员

正如类可以定义共享的 static 数据成员一样,类也可以定义 static 成员函数。static 成员函数没有 this
形参,它可以直接访问所属类的 static 成员,但不能直接使用非 static 成员。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载