对象是执行环境中存储的一个类型化区域;除了保留状态信息之外,它还定义行为。 使用 class-name 定义类类型对象。 考虑以下代码片断:
// class_type_objects.cpp
class Account
{
public:
Account() // Default constructor
{
}
Account( double ); // Construct from double.
double& Deposit( double );
double& Withdraw( double, int );
};
int main()
{
Account CheckingAccount; // Define object of class type.
}
前面的代码声明一个称为 Account 的类(一个新类型)。 然后使用此新类型定义一个称为 CheckingAccount 的对象。
C++ 为类类型的对象定义了以下运算:
赋值。 可以将一个对象分配给另一个对象。 此操作的默认行为是成员复制。 可通过提供用户定义的赋值运算符来修改此行为。
使用复制构造函数的初始化。
以下是使用用户定义的复制构造函数的初始化示例:
对象的显式初始化。 例如:
Point myPoint = thatPoint;
将 myPoint 声明为类型 Point 的对象,并将其初始化为 thatPoint 的值。
通过作为参数传递导致的初始化。 可以通过值或引用将对象传递给函数。 如果通过值传递对象,则会将每个对象的副本传递给函数。 创建副本的默认方法是成员复制;这可通过提供用户定义的复制构造函数来进行修改(采用类型为“类的引用”的单个参数的构造函数)。
由函数中的返回值的初始化导致的初始化。 可以通过值或引用从函数返回对象。 通过值返回对象的默认方法是成员复制;这可以通过提供用户定义的复制构造函数来进行修改。 通过引用返回的对象(使用指针或引用类型)不应同时是已调用函数的自动和本地对象。 如果是这样,则返回值所引用的对象必须先超出范围,然后才能使用。
重载运算符说明如何基于各个类重新定义其他运算符。