这篇文章主要帮助入门新手了解C++当中的类,不会涉及复杂内容,大佬请勿介意,如有错误请私信或评论。
首先,我们要知道类究竟是用来做什么的。
类是面向对象编程中的概念,是对于有相似行为或属性的对象的统称,是对统一类型事物进行抽象。关于面向对象,我有空会在其它文章讲解。
我们可以把类看作复杂一些的结构体,比起结构体,类多出对数据的处理能力,就是函数,或者称为方法。同时对于数据和方法存在3种不同的修饰。
下面来看一个简单的例子:
#include <iostream>
using namespace std;
class Yuan {
public:
int r;
int h;
double pai;
int V;
Yuan(int _r,int _h);
int get_V();
}; //类主体的花括号后是有;的
Yuan::Yuan(int _r, int _h)
{
r = _r;
h = _h;
pai = 3.14;
}
int Yuan::get_V()
{
V = pai * r * r * h;
return V;
}
int main()
{
int user_r,user_h;
cout << "请输入半径:" << endl;
cin >> user_r;
cout << "输入高:" << endl;
cin >> user_h;
Yuan y(user_r,user_h);
cout << "体积为:\n" << y.get_V() << endl;
}
我们可以看出,类的声明需要用class关键字,在class之后的,是类的主体,类当中的数据与函数有public(公共的),protected(保护的),private(私有的)3种,其中public类型允许在类外调用,private不允许在类外部调用,允许在类内部调用,即允许类的函数去调用它。protected与private类似,但对派生类也是可见的。当然,也有例外,那就是他们都对友元类可见,但那是高阶一些的内容了。
这几个关键字的作用域是自声明开始到下一个关键字(这三个之一)(仅类主体中)。
未使用上述三个任何关键字之一的情况下,默认为private。
类当中的数据不能直接初始化,它们需要在构造函数中被初始化,构造函数在之后会讲。
类当中的函数则必须定义,但是也可以仅在类的内部声明,在外部定义,此时需要使用域作用符::
格式如下
类名::函数名(函数参数);
其中有两种特殊的函数,分别是构造函数和析构函数。
构造函数用于类中数据的初始化,存在有参数和无参数两种情况,可同时被声明,由创建对象时是否传入参数决定调用哪个,其名称就是类的名称,需要在类中声明,声明时无需关键字强调类型,需要定义,在创建对象时自动调用。
析构函数的名称是构造函数前加~
作用正好与构造函数相反,用于在销毁对象时释放申请的动态内存分配。
在声明对象时,则用
类名 对象名(参数);