C++类和对象
C++编程的主要目的,是面向对象添加到C的编程语言和C++中的类是核心功能,支持面向对象的编程和通常被称为用户定义的类型。
类是用来指定对象的形式,它结合了数据的表示和操纵数据成一个整齐的包装方法。一个类中的数据和函数的被称为类的成员。
C++类定义:
当定义一个类时,定义一个数据类型的蓝本。这实际上并不定义任何数据,但它确实定义什么类的名字的意思,即,什么类的对象将包括哪些操作可以对这样的对象来执行。
类定义以关键字class后跟类名称以及类体,由一对大括号封闭。类定义必须由分号或声明的列表执行。例如,我们用关键词class如下定义Box的数据类型:
class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
关键字public 决定它后面的类成员的访问属性。公共成员可以从类外部的类对象范围内的任何地方访问。还可以指定一个类的成员私人(private)或保护(protected),我们将在后面的小节中讨论。
定义C++对象:
类提供对象的图纸,所以基本上一个对象是从一个类创建的。我们声明一个类的对象具有排序完全相同的声明我们声明基本类型的变量。下面的语句声明Box类的两个对象:
Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box
两个对象Box1和Box2都有自己的数据成员的副本。
访问数据成员:
类对象的公共数据成员可以使用直接成员访问运算符(.)来访问。让我们试试下面的例子:
#include <iostream> using namespace std; class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box }; int main( ) { Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box double volume = 0.0; // Store the volume of a box here // box 1 specification Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // box 2 specification Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // volume of box 1 volume = Box1.height * Box1.length * Box1.breadth; cout << "Volume of Box1 : " << volume <<endl; // volume of box 2 volume = Box2.height * Box2.length * Box2.breadth; cout << "Volume of Box2 : " << volume <<endl; return 0; }
让我们编译和运行上面的程序,这将产生以下结果:
Volume of Box1 : 210 Volume of Box2 : 1560
要注意的是私有(private)和受保护(protected)成员不能直接使用直接成员访问运算符(.)访问。We will learn how private and protected members can be accessed.
类&对象的详细信息:
到目前为止,已经得到了关于C++类和对象基本的理念。有相关C++类和对象进一步有趣的概念,我们将在下面列出各个子部分将讨论:
概念 | 描述 |
---|---|
类成员函数 | 类的成员函数是一个函数,它定义或像任何其他变量的类定义的原型 |
类访问修饰符 | 类成员可以被定义为公共(public),私人(private)或保护(protected)。默认情况下,成员将被假定为私有(private) |
构造函数和析构函数 | 类构造函数是在创建类的新对象时调用类的特殊函数。 析构函数也是一种特殊的函数,当创建的对象被删除时调用 |
C++拷贝构造函数 | 拷贝构造函数相同于类的构造函数,它先前已创建的对象初始化它创建一个对象的构造函数 |
C++友元函数 | 友元函数允许完全访问类的private和protected成员 |
C++内联函数 | 有了内联函数,编译器试图扩大在函数体中的代码的地方调用函数功能 |
C++ this指针 | 每个对象具有特殊的指针,它指向对象本身 |
C++指向类 | 一个指向类恰以同样的方式指向一个结构。其实类实际上只是一个函数结构 |
类的静态成员 | 类两个数据成员和成员函数可以声明为静态的 |