第九讲:c++的class

来源:互联网 发布:55开淘宝店网址 编辑:程序博客网 时间:2024/06/11 04:18

本文的编写是为了在学习c++的时候加深自己的记忆,同时也为与我一般的初学者提供一些参考,此处特别感谢微信公众号“c/c++的编程教室”,我的学习过程按照公众号的推送进行学习的!

1.在文章开始之前先说一下简单的数据类型和0的比较:

(1)int型数据比较简单,可以直接和0比较,即if(int i == 0)或者if(int i != 0)

(2)指针型数据比较是和NULL进行比较,即if(*i == 0)或者if(*i != 0)

(3)double(float)型数据存在精度,不能直接和0进行比较,可定义一个接近0的double(float)数值,比如double a=0.0001, if (double b>-a)&&(b<a)

(4)bool型数据只需要比较0和非0,即if(a)或者if(!a)

2.那么接下来我们就开始学习c++d的类

(1)声明函数模板:template<typename T>或者template<class T>

template表示声明一个模板,是一个关键词,而typename则是声明类型,此处即声明了一个类型T,T可以是double,float,int等,当然typename不是唯一的,可以用class替代,作用一样,此处claa不是定义的class类,只是定义一个类型T.

当然可以定义不止一个类型,可以多个,只是每个类型的名字不同:template<typename T,typename U,typename...>

此次给出一个例子:

//从一个数组里面找出最小的元素:

template<typename T,int size>//定义类型

T min(T(&in_array)[size])//定义函数min

{

T min=in_array[0];//输入数组的第一个元素赋值给min 

for(int i=0;i<size;i++)

{

if(in_array[i]<min);

min=in_array[i];

}

return min;

}

(2)构造函数,拷贝函数,赋值函数,析构函数

构造函数的名字与类的名字相同,没有返回类型,但是有参数列表(可能为空)和函数体(可能为空)。构造函数的作用是初始化类对象的数据成员,当类的对象被创建时就会执行构造函数。

②拷贝函数,作用在于把一个对象的值拷贝给另外一个对象

③赋值函数,通过赋值操作“=”给对象赋值

④析构函数,用于销毁对象占的内存空间

(3)给出一个输入表的时间,输出时针和分针的角度。一般开始写类的项目时,可以写三个文档,一个是源文件.h的类声明,一个是声明对应的类定义.cpp,还有一个就是调用的主函数main()。下面给出一个简单的事例:


//clock.h函数的声明

#pragma once
#include <iostream>
#include <iomanip>
using namespace std;
class clock1 {//关键字class,类型为clock1
public:
clock1();//默认构造函数,与类的名字相同的函数
~clock1();//析构函数
clock1& sethh(int hh);//设置小时数
clock1& setmm(int mm);//设置分钟数
int gethh();//获取小时
int getmm();//获取分钟
void diffA();//计算夹角度数
void Show();//打印结果
private:
int m_mm, m_hh;
double diff;
};


//clock.cpp已声明的函数的定义

#include"clock.h"


clock1::clock1() :m_mm(0),m_hh(0), diff(0.0)
{
}
clock1::~clock1()
{


}
clock1& clock1::sethh(int hh)
{
m_hh = hh % 12;
return *this;
}
clock1& clock1::setmm(int mm)
{
m_mm = mm % 60;
return *this;
}
int clock1::gethh()
{
return m_hh;
}
int clock1::getmm()
{
return m_mm;
}
void clock1::diffA()
{
diff = ((m_hh * 30 + ((double)m_mm) / 60.0 * 30) - (double)m_mm * 6);
if (diff > 180)
diff = 360 - diff;
if (diff < 0)
diff = -diff;
}
void clock1::Show()
{
cout.fill('0');
cout << setw(2) << m_hh << ":";
cout << setw(2) << m_mm << "=";
cout << diff << endl;
}


//clock_main主函数

#include"clock.h"
int main()
{
int h, m;
clock1 m_clock;
cout << "input hour and minute" << endl;
while (cin >> h >> m)
{
m_clock.sethh(h).setmm(m).diffA();
m_clock.Show();
}
return 0;
}


(4)访问控制与封装

①public://可被整个程序访问

②private://被类的成员函数访问


1 0
原创粉丝点击