类基础

来源:互联网 发布:java获取微信签名 编辑:程序博客网 时间:2024/05/29 17:52

类的定义和声明

最简单地来说,类就是定义了一个新的类型和一个新的作用域。
- 类成员

每个类可以没有成员,也可以定义多个成员,成员可以是数据,函数或类型别名。一个类可以包含公有的,私有的和受保护的部分。
  • 构造函数

    创建一个类类型的对象时,编译器会自动地使用一个构造函数来初始化改对象。构造函数是一个特殊的,与类同名的成员函数,用于给每个数据成员设置适当的初始值。

  • 成员函数

    在类内部,声明成员函数是必需的,而定义成员函数是可选的。在类内部定义的函数默认为inline。在类外部定义的成员函数必需指明他们是在类的作用域中。

    成员函数有一个附加的隐含实参,将函数绑定到调用函数的对象。trans.avg_price()就是在调用名为trans的对象的avg_price()函数。如果trans是一个Sales_item对象,则在avg_price函数内部对Sales_item类成员的引用就是对trans成员的引用。

    将关键字const加在形参表之后,就可以将成员函数声明为常量:

    double avg_price() const;  //const成员不能改变其所操作的对象的数据成员。

    const必须同时出现在声明和定义中。

  • 类定义的更多内容

    1.使用类型别名来简化类:
    类可以定义自己的局部类型的名字。例如,为std::string::size_type提供一个类型别名:

    class Screen{public:typedef std::string::size_type index;           //在类内部定义一个类型别名private:index height;index width;};

    2.显示指定inline成员函数

    有些在类内部定义的简单函数会自动作为inline处理。也可以显示地声明为inline。可以在类定义体内部指定一个成员为inline,作为其声明的一部分。也可以在类定义体外部的函数上指定为inline。在类的外部定义inline会使得类比较容易阅读。

  • 类声明与类定义

    可以声明一个类而不定义它:

    class Screen;   //前向声明,在程序中引入了类类型Screen;在声明之后,定义之前,            //类Screen是一个不完全类型,即已知Screen是一个类型,但不知道包含哪些成员。

    不完全类型只能以有限的方式使用。不能定义该类型的对象。只能用于定于指向该类型的指针和引用,或者用于声明使用该类型作为形参类型或返回类型的函数。

隐含的this指针

在上一部分提到,成员函数有一个附加的隐含形参,即指向该类对象的一个指针,名为this
成员函数不能定义this形参,而是由编译器隐式定义。成员函数可以显示使用this指针。

0 0
原创粉丝点击