类类型
在本节课中,我们将探讨类的一些特性。
定义
类是封装了属性和方法的数据类型
C++ 提供了一些基本类,例如整数、字符串、双精度浮点数等。每种类型都有自己的方法,允许我们执行特定操作。
例如,length() 方法可用于计算字符串的长度。
在 C++ 中,我们可以使用内置类型并定义自己的方法来创建自定义类类型。
类与结构体(struct)非常相似。在本课程中,我们将统一使用类。
以下是一个类的示例:
1class Account { 2public: 3 Account(double b); 4 void deposit(double amt); 5 void withdraw(double amt); 6 double getBalance() const; 7private: 8 double balance; 9};
属性
属性是在类体中定义的变量。
变量 balance 是一个属性或数据成员,因为它存储了与类相关的信息。
方法
类中的函数被称为方法。方法通常使用类的属性来执行某种操作。我们稍后会讨论 public 标识符的作用。
对象
对象是类的一个实例。
类帮助我们创建具有相同特性的对象。
对象是类在运行时的具体实例。
对象实例化
创建类的对象与创建字符串或整数类似。我们需要指定类名,然后是变量名。
1Account account(100.0);
在此处,我们:
- 创建了一个类型为
Account的对象account。 - 初始化该对象。
- 该对象在创建时已被编译器识别。
有人可能会问:“这个对象能做什么?”答案在于类的公共方法及其属性。
访问类成员
所有公共方法都可以从类外部访问。这意味着对于上面的 Account 类,deposit()、withdraw() 等方法可以直接用于每个对象。
每个对象也会拥有一个 balance 属性,但由于它是私有的,不能直接访问。只有类的方法才能使用这个数据成员。
可以使用 . 操作符来访问类的成员。如果是对象指针,则使用 -> 操作符。
1Account acc(200.0); 2Account* accPtr = new Account(200.0); 3 4acc.balance = 500.0; // 错误;balance 是私有的 5acc.deposit(200.0); 6 7accPtr->balance = 500.0; // 错误;balance 是私有的 8accPtr->deposit(200.0);
注意:根据访问权限,编译器决定是否允许访问类成员。
静态属性
静态属性(或类属性)是被类的所有实例共享的属性。
通常情况下,每个对象都会拥有类属性的独立副本,即一个对象的属性与其他对象的属性互不干扰。
但静态属性并非如此。它在整个类中只有一个实例,并被所有对象共享。
可以将其理解为一个全局类变量。
静态属性也可以在没有类实例的情况下访问,因为它属于类本身,而不是某个具体对象。要访问它,可以使用作用域解析运算符 ::。
静态类属性只能在类外部进行初始化。
1class Account { 2 ... 3 static int deposits; 4}; 5int Account::deposits = 0;