龙空技术网

C++|类与对象的简单解释及一个比较通俗易懂的实例化说明

小智雅汇 583

前言:

而今姐妹们对“类的实例化”大致比较重视,姐妹们都想要学习一些“类的实例化”的相关资讯。那么小编在网摘上收集了一些有关“类的实例化””的相关资讯,希望你们能喜欢,看官们快快来学习一下吧!

根据基本数据类型声明的变量可以告诉编译器以下信息:

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-

标签: #类的实例化