类
class 类名{访问权限: 属性 / 行为};
1、创建一个圆类,求圆的周长
#include<iostream>
using namespace std;
double pi = 3.14;
//class 代表设计一个类,类后面紧跟着的就是类名称
class Circle
{
//访问权限
//公共权限
public:
//属性
//半径
int c_r;
//行为
//获取圆的周长
double calculateZC()
{
return 2 * pi * c_r;
}
};
/*
double Circle::calculateZC()
{
return 2 * pi * c_r;
}
*/
int main(void)
{
//通过圆类创建具体的圆(对象)
//实例化——通过一个类创建一个对象的过程
Circle c1;
//给圆对象的属性进行赋值
c1.c_r = 10;
cout << "圆的周长为" << c1.calculateZC() << endl;
return 0;
}
输出结果:
2、类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种
public——公共权限——成员类内可以访问,类外可以访问
protected–保护权限——成员类内可以访问,类外不可以访问
private——私有权限——成员类内可以访问,类外不可以访问
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
string p_name;
protected:
string p_car;
private:
int p_password;
public:
void funcshow()
{
p_name = "张三";
p_car = "拖拉机";
p_password = 123456;
}
//可以定义print()函数来获取protected下的成员
void print(){
cout<<p_name<<" "<<p_car<<" " <<p_password<<endl;
}
};
int main(void)
{
Person p1;
p1.p_name = "王五";
//p1.p_car = "GTR";protected类外无法访问
//p1.p_password = 123;private类外无法访问
p1.funcshow();
p1.print();
return 0;
}
输出结果:
构造函数
类名(){}
构造函数没有返回值也不写void
函数名称与类名相同
构造函数可以有参数,因此可以发生重载
程序在调用对象的时候会自动调用构造,无须手动调用,而且只会调用一次
#include<iostream>
using namespace std;
class Box
{
public:
static int ObjectCount;
// Box();//
Box(double len)
{
length = len;
ObjectCount++;
}
private:
double length;
};
int Box::ObjectCount = 0;
int main()
{
Box box1(10.0);
Box box2(20.0);
cout << Box::ObjectCount << endl;
return 0;
}
输出结果:
析构函数
~类名(){}
#include<iostream>
using namespace std;
class Box
{
public:
static int ObjectCount;
// Box();//
//构造函数
Box(double len)
{
length = len;
ObjectCount++;
}
//析构函数
~Box()
{
cout<<"======quit========"<<endl;
}
private:
double length;
};
int Box::ObjectCount = 0;
int main()
{
Box box1(10.0);
Box box2(20.0);
cout << Box::ObjectCount << endl;
return 0;
}
输出结果: