C++| 对象和类

1 C++的类

1.1 访问控制

  • 数据隐藏(数据放在私有部分)是一种封装,实现细节隐藏其中。
  • 类定义和类声明放在不同的文件中。
  • 类的公有接口和实现细节分开。
  • 数据项放在私有部分,组成类接口的成员函数放在公有部分。成员函数(非接口)也可以放在私有部分。

1.2 类成员函数

  • 定义成员函数时用域解析运算符(::)标识函数所属的类。
  • 限定名(qualified name)<利用域解析运算符,包含类名>和非限定名(unqualified name),非限定名只能在类的作用域中使用。

(1)内联函数

定义位于类声明中的函数自动称为内联函数(定义和声明在一起)。

类声明之外定义的函数加 inline 将使其成为内联函数。

(2)客户/服务器

客户:使用类的程序,客户只能通过公有方式定义的接口使用服务器,客户只需要了解接口即可。

服务器:类声明和类方法,服务器确保内部程序的可靠运行,可以修改实现细节,但是不可以修改接口。

(3)输出精度控制

使用中如果数值本身的小数位数不足时不会自动补充0,需要注意。但是当本身的小数位数充足时,可以缩减小数位数。

更详细参考(50条消息) cout.precision()的使用_阿黄啦啦-CSDN博客_cout.precision

1.3 构造函数和析构函数

构造函数:用于构造新对象、赋值初始化私有数据成员。

  • 特殊的一种成员函数,在创建类对象时调用。
  • 构造函数没有声明返回类型。
  • 默认构造函数可以没有参数,若是有参数,则必须给所有参数都提供默认值。
  • 对于未被初始化的对象,程序将使用默认构造函数创建。

构造函数的参数表示的是赋给类成员的值,所以不能用类成员名称作为构造函数的参数。

若要创建对象,且不显示的初始化对象,必须定义一个不接受任何参数的默认构造函数。

  • 给已有构造函数的参数提供默认值。
  • 通过重载定义构造函数(没有参数的构造函数)。

C++11 列表初始化

构造函数的参数可以设置默认值。若一个函数有3个参数,在初始化时仅仅传递了第一个参数,后面的2个参数将自动取为参数的默认值。

const 成员函数

类方法不修改调用对象,就应该将其声明为 const 成员函数。

// 成员函数声明
void show() const;

// 成员函数定义
void Stock::show() const {
    //实现细节
}

1.4 this指针

this指针用来指向调用成员函数的对象(this作为隐藏参数传递给方法)。所有的类方法都将this指针设置为调用它的对象的地址。

每个成员函数都有一个this指针,并且都指向调用对象。

引用调用对象时,应使用表达式*this。

const Stock & Stock::topval(const Stock & s) const {
    if(s.total > total) 
        return s;    //返回参数对象
    else
        return *this;
}

1.5 对象数组

1.6 类作用域

1.7 抽象数据类型

猜你喜欢

转载自blog.csdn.net/qq_38844835/article/details/120658967