龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

《C++ primer plus》读书笔记(三)(2)

时间:2014-10-17 02:10来源:网络整理 作者:网络 点击:
分享到:
(4)、名称空间是开放的,即可以将某些名称添加到已有的名称空间中,如: namespace qsk { char * name(const char* ); } //将这个名称添加到qsk中。 (5)、通过作

  (4)、名称空间是开放的,即可以将某些名称添加到已有的名称空间中,如:  namespace qsk { char * name(const char* ); }  //将这个名称添加到qsk中。

  (5)、通过作用域运算符来限定各名称,如:  cout << qsk::name << endl;

14、using声明和using编译指令——

  (1)、using声明使得特定的标识符可用。(无须限定名称,直接使用)如:  using std::cout;

  (2)、using编译指令使得整个名称空间可用。(多了一个namespace)如:  using namespace std;

  (注意,不要在头文件中使用using编译指令。对于using声明,首选将其作用域设置为局部而不是全局。)

 第十章

15、类——

  (1)、类成员可以是数据也可以是函数。类声明时,用访问控制符来修饰。

  (2)、定义成员函数时,使用作用域解析运算符(::)来表示函数所属的类。如  void Stock::update(double price){}

  (它可以访问类的私有成员)

  (3)、定义位于类声明中的函数,自动成为内联函数。

  (4)、也可以在类外使函数成为内联函数,只需要在类实现中使用 inline 限定符,如:  inline void Stock::update(double price){}

  (5)、创建对象,如:  Stock a,b;  也可以使用new为对象分配存储空间。如:  Stock a = new Stock;

  (6)、通过成员运算符来使用成员函数,如: a.show();  

  (7)、所创建的每一个对象都有自己的存储空间,用于存储其内部变量和类成员;所有对象公用一组类方法。    

16、访问控制——private、public、protected

  不必在类声明中使用关键字private,它是类的默认访问控制。

  (注意!C++中,结构具有与类相同的特性,不过结构的默认访问类型是public。)

17、类设计——

  (1)、提供类声明。

  (2)、实现类成员函数。通常单独提供函数定义,通过(::)来制定函数属于哪个类。

18、类的构造函数——

  专门用于构造新对象、将值赋予它们的数据成员。

  (1)、构造函数的原型和函数头没有返回值,而且没有被声明为void类型。构造函数没有声明类型。

  (2)、构造函数的参数表示的不是类成员,而是赋予他们的值,因此参数名不能与类成员相同。(与Java不同)

   (常见的做法是在数据成员名使用m_前缀,或使用后缀_)

19、使用构造函数——

  (1)、隐式调用:  Stock s( "a", 22, 1.2);  或  Stock a;

  (2)、显式调用:  Stock s = Stock( "a", 22, 1.2);

   (注意,构造函数的其他特征与Java类似。)

20、析构函数——对象过期时,程序自动调用的成员函数,用以完成清理工作。如:  ~Stock();

  (注意!如果对象通过new创建的,使用delete释放内存时,其析构函数被自动调用。)

21、对象赋值——默认情况下,一个对象赋值给同类型的另一对象时,会将源对象中每个数据成员的内容复制给目标对象。

  (1)、初始化方式:  Stock s = Stock("a", 22, 1.2);  //可能创建临时变量。

  (2)、赋值方式:  s1 = Stock("a", 22, 1.2);  //总会在赋值前创建一个临时变量。并且会自动为临时变量调用析构函数。

22、const成员函数——确定不修改对象的类方法。const关键字放在函数括号后面,如:  void stock:: show() const;  

23、C++11列表初始化——对于Stock jock {"abcd"}将匹配Stock::Stock(const std::string & co, long n = 0,double pr = 0.0);

  而对于Stock c {};将匹配默认构造函数。

24、this指针——类方法中使用,this指针指向调用对象,为调用类方法的对象的地址。如需引用整个调用对象,可以使用*this。

25、对象数组——如:  Stock s[4] = {Stock("a", 22, 1.2), Stock(), Stock("a", 22, 1.2)};

    //这里首先使用默认构造函数创建数组元素,然后花括号中的构造函数创建临时对象,然后临时对象的内容被复制到相应元素中

  (注意!创建类对象数组,这个类必须有默认构造函数。)

26、作用域为类的常量——

  (1)、类中声明的枚举,作用域为整个类,不属于对象,而是属于类。

  (2)、使用关键字static修饰的常量将被放在静态存储区域,不属于对象。

 27、新枚举——enum class 或 enum struct

  (1)、枚举量的作用域为类。需要用枚举名类限定枚举量。

  (2)、常规枚举自动转换为整型,但作用域内枚举不能隐式转换为整型。不过可以显式转换。

  (3)、新枚举的底层类型为int,不过也可以指定底层类型,如:  enum class : short pizza { a, b, c, d};

28、小结——

  (1)、类将数据和方法组合成一个单元,其私有性实现数据隐藏。类是用户定义的类型,对象是类的实例。

  (2)、类声明应放在头文件中,定义成员函数的源代码应放在方法文件中。

  (3)、每个对象都存储自己的数据而共享类方法。

  (4)、抽象数据类型(Abstract Data Type)——ADT

精彩图集

赞助商链接