1.类和对象定义
C++面向对象的三大特征
封装,继承,多态。
对象
C++认为万事万物皆为对象,对象有其属性和行为。
成员
类中的属性和成员
属性
也叫成员属性,成员变量
行为
也叫成员函数,成员方法(例如一个人可以称为对象,他的属性有姓名,年龄,身高,体重;行为有跑,走,跳。而具有相同性质的对象我们又叫做类,类如人类。)
2.封装
1.示例
设计一个圆类,求圆的周长
#include<iostream>
using namespace std;
const double PI = 3.14;
class circle
{
public://访问权限:公共的权限
//属性
int r;//半径
//行为(以子函数的形式表现)
double calculate()
{
return 2 * PI * r;//返回圆的周长
}
};
int main()
{
circle c1;//实例化(通过类创建一个对象)
c1.r = 10;//对属性进行赋值
cout << "圆的周长为:" << c1.calculate() << endl;
system("pause");
return 0;
}
程序结果为:
其中主函数中属性的赋值操作可以被行为中的赋值函数替代,从而在主函数中只需要调用这个行为就可以了(代码如下)
#include<iostream>
using namespace std;
const double PI = 3.14;
class circle
{
public://访问权限:公共的权限
//属性
int r;//半径
//行为(以子函数的形式表现)
double calculate()
{
return 2 * PI * r;//返回圆的周长
}
void setr(int r1)
{
r = r1;
}
};
int main()
{
circle c1;//实例化(通过类创建一个对象)
//c1.r = 10;
c1.setr(10);//对属性进行赋值
cout << "圆的周长为:" << c1.calculate() << endl;
system("pause");
return 0;
}
2.访问权限
1.分类(默认访问权限是private)
public(公共权限):类内和类外都可以访问
protected(保护权限):类内可以访问,类外不可以访问
private(私有权限):类内可以访问,类外不可以访问
2.代码(类内访问)
#include<iostream>
using namespace std;
#include<string>
const double PI = 3.14;
class person
{
public:
string name;
protected:
string car;
private:
int password;
public:
//类内访问
void fun()
{
name = "张三";
car = "奔驰";
password = 123456;
}
};
int main()
{
return 0;
}
3.代码(类外访问)
#include<iostream>
using namespace std;
#include<string>
const double PI = 3.14;
class person
{
public:
string name;
protected:
string car;
private:
int password;
};
int main()
{
person p1;
p1.name = "李四";
p1.car = "奥迪";//会报错,显示不可访问
p1.password = 123456;//会报错,显示不可访问
return 0;
}
4.struct和class区别
在C++中他们唯一的区别是默认的访问权限的不同。
struct默认权限为共有,class默认权限为私有。
5.对私有属性进行读写方法
可以用公共类型的子函数来进行读写操作。
#include<iostream>
using namespace std;
#include<string>
const double PI = 3.14;
class person
{
public:
void setname(string a)//写name
{
name = a;
}
string getname()
{
return name;
}
int getage()
{
return age;
}
void setidol(string a)
{
idol = a;
}
private:
string name;//可读可写
int age;//可读
string idol;//可写
};
int main()
{
person p;
p.setname("张三");//写name
cout << p.getname() << endl;//读name
p.setidol("李四");//写idol
cout << p.getage() << endl;//读age
return 0;
}