C++是在C语言基础上发展而来的,但引入了面向对象编程的特性,因而有了“类”的特性。本篇介绍C++的类如何定义。
/*
* Author:W;
* 类
* 1.类的属性
* 2.类的函数
* 1)构造函数:默认、带参以及拷贝
* 2)析构函数:类的对象销毁时执行;
* 3)普通函数:
* 4)友元函数:不是类的成员函数,定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。
* 5)内联函数:牺牲空间换取访问效率
* 3.静态成员:
* 1)静态属性:不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化
* 2)静态函数:只要使用类名加范围解析运算符 :: 就可以访问。静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。
*/
//引入头文件:头文件包含了程序中必需的或有用的信息
#include <iostream>
using namespace std;
/*类的定义*/
class Box
{
public:
//静态属性
static int count;
//静态函数
static int getCount();
//默认构造函数
Box();
//带参数构造函数
Box(float w,float h);
//拷贝构造函数:它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。
Box(const Box& obj);
//析构函数:在对象销毁时执行
~Box();
//友元函数
friend void printInfo(Box box);
//方法1:在类外使用"::"范围解析运算符来定义
void setWidth(float width);
void setHeigth(float height);
//方法2:在函数声明时,直接定义
float GetVolume()
{
return width * height;
}
private:
float width;
float height;
};
//静态属性初始化
int Box::count = 5;
//静态函数定义
int Box::getCount()
{
return count;
}
//默认构造函数
Box::Box()
{
cout << "Box 默认构造函数" << endl;
}
//带参构造函数
Box::Box(float w, float h)
{
cout << "Box 带参数构造函数" << endl;
width = w;
height = h;
}
//拷贝构造函数
Box::Box(const Box& obj)
{
cout << "Box 拷贝构造函数" << endl;
width = obj.width;
height = obj.height;
}
//析构函数(销毁时执行)
Box::~Box()
{
cout << "Box 对象销毁时执行" << endl;
}
//设置宽度
void Box::setWidth(float wid)
{
width = wid;
}
//设置高度
void Box::setHeigth(float hei)
{
height = hei;
}
//友元函数:打印信息
void printInfo(Box box)
{
cout << "友元函数 printInfo 访问private和protected成员 box.width=" << box.width << " box.height=" << box.height << endl;
}
//main程序执行入口函数
int main()
{
Box box;
box.setWidth(3);
box.setHeigth(5);
cout << "1.Box的面积 S = " << box.GetVolume() << endl;
Box box2(2, 7);
cout << "2.Box2的面积 S= " << box2.GetVolume() << endl;
Box box3 = box;
cout << "3.Box3的面积 S= " << box3.GetVolume() << endl;
//友元函数调用
printInfo(box);
//静态函数调用
cout << "Box 静态函数 getCount = " << Box::getCount() << endl;
}
运行结果如下: