前言:
而今姐妹们对“类的实例化”大致比较重视,姐妹们都想要学习一些“类的实例化”的相关资讯。那么小编在网摘上收集了一些有关“类的实例化””的相关资讯,希望你们能喜欢,看官们快快来学习一下吧!根据基本数据类型声明的变量可以告诉编译器以下信息:
I 需要的内存空间;
II 取值的范围;
III 可以执行的操作(如可以使用什么运算符,使用运算符的规则及达到的效果);
在C++中,可自己定义类型,以模拟要解决的问题。要声明新类型,可创建一个类,类是新类型的定义,这个新的类型也要能够告诉编译器一些相关的信息,如可以操作的数据,需要的内存空间,对定义的数据可以进行的操作,创建时的初始化赋值,对象删除后内存空间的释放、数据访问的控制等。然后可以根据新类型定义新类型的变量(一般叫实例)。这样的一个过程类似于根据基本数据类型声明变量。
C++类是一个模板,用于创建对象(就如同用基本数据类型定义变量)。定义类后,便可像使用其他类型那样使用根据它创建的对象。
类是一系列捆绑在一起的变量和函数,其中的变量可以是任何其他类型,包括其他类。
变量构成了数据,而函数使用这些数据来执行任务。将变更和函数捆绑在一起称为封装。
类中的变量称为成员变量,或叫数据成员、实例变量,它们是类的组成部分。
类中的函数使用和修改成员变量,它们被称为类的成员函数或方法。与成员变量一样,成员函数也是类的组成部分,它们决定了类的对象能做什么。
以下内容请结合后面的实例去理解:
1 声明类
声明类使用关键字class,并在后面加上有关成员变量和成员函数的信息。类定义放在一组大括号{}内。
声明并不直接给成员变量分配内存,这只是告诉编译器,这个声明的类是什么样的:包含哪些数据以及能做什么?编译器根据类声明的成员变量,就知道这个类的对象所需要的内存空间。
2 实现成员函数
对于声明的每个成员函数,都必须进行定义。
成员函数的定义以类名打头,然后是作用域解析运算符(::)和函数名。
类函数和常规函数类似,也可以接受参数并返回值。
一般包括有四个特殊的成员函数:访问、设置私有成员变量值的存取器、构造函数、析构函数;
用来设置或获取私有成员变量值的函数称为存取器(accessor);要使用这些私有成员变量,其他类必须调用存取器,而不能直接使用。存取器让您能够将数据的存储方式和使用方式分开。这样,如果修改了数据的存储方式,也无须重写使用数据的函数。
构造函数用于实例化对象时调用它来初始化数据成员,构造函数名与类名相同,且没有返回值,参数可有可无;
析构函数用于释放分配给对象的内存,析构函数的名称总是由腭化符号(~)和类名组成,无参数、无返回值、无语句;
3 创建对象
要根据类创建对象,可指定类名和变量名,类似根据基本数据类型创建变量。创建对象被称为实例化,对象是类的实例。对象可以创建在栈中,也可以使用指针创建在堆中。
4 访问对象成员
创建在栈中的对象,可使用句点运算符(.)来访问其成员函数和成员变量。
要访问堆中的对象,必须对指针解除引用,并对指针指向的对象使用句点运算符。也可以使用一种简捷的间接访问运算符,指向运算符(points-to operator,->),它由短划线(-)和大于号(>)组成,C++将它们视为一个符号。
实例代码:
运行结果:
Pedaling; tricycle speed 6 mph
Pedaling; tricycle speed 7 mph
Braking; tricycle speed 6 mph
Braking; tricycle speed 5 mph
Braking; tricycle speed 4 mph
Pedaling; tricycle speed 16 mph
Pedaling; tricycle speed 17 mph
堆中的对象在函数返回后仍存在。另外,这种对象还是动态的,将对象存储在堆中的功能让您能够在运行阶段决定需要多少个对象,而不必预告声明。在堆中声明的对象可用来创建复杂的数据结构。
附代码:
#include <iostream>
class Tricycle //声明类
{
private:
int speed; //数据成员,成员函数或方法的操作对象
public:
Tricycle(int initialAge);
~Tricycle();
//↓ 两个特殊的成员变量,称为存取器(accessor),用于获取和设置私有成员变量值
int getSpeed(); //成员函数,对数据成员的操作:这里是获取私有成员变量值
void setSpeed(int speed); //成员函数,对数据成员的操作:这里是设置私有成员变量值
void pedal(); //成员函数,对数据成员的操作;
void brake(); //成员函数,对数据成员的操作;
};
// constructor for the object
Tricycle::Tricycle(int initialSpeed) //特殊成员函数,称构造函数,用于初始化对象的成员数据
{
setSpeed(initialSpeed);
}
// destructor for the object
Tricycle::~Tricycle() //特殊成员函数,称析构函数,用于释放分配给对象的内存
{
// do nothing
}
// get the trike's speed
int Tricycle::getSpeed()
{
return speed;
}
// set the trike's speed
void Tricycle::setSpeed(int newSpeed)
{
if (newSpeed >= 0)
{
//speed = newSpeed;
this->speed = newSpeed; //也可以显式使用this指针
}
}
// pedal the trike
void Tricycle::pedal()
{
setSpeed(speed + 1);
std::cout << "\nPedaling; tricycle speed " << getSpeed() << " mph\n";
}
// apply the brake on the trike
void Tricycle::brake()
{
setSpeed(speed - 1);
std::cout << "\nBraking; tricycle speed " << getSpeed() << " mph\n";
}
// create a trike and ride it
int main()
{
Tricycle wichita(5); //在栈中创建(实例化)一个对象
wichita.pedal();
wichita.pedal();
wichita.brake();
wichita.brake();
wichita.brake();
Tricycle *pWichita = new Tricycle(15); //在堆中创建(实例化)一个对象
(*pWichita).pedal(); //通过解引用和句点运算符访问对象成员
pWichita->pedal(); //使用指向运算符(->)访问对象成员
delete pWichita;
system("pause");
return 0;
}
-End-
标签: #类的实例化