打在前面
自己感觉类与结构体很相似,所以开头是一点类与结构体的区别
类中的属性与行为统一称为 "成员"
所以属性又被称为:成员属性或者是成员变量
行为又被称为:成员函数或者是成员方法
数组是一系列相同类型的元素的集合
结构体是不同类型元素的集合
类不仅仅是数据类型不同的元素的集合,还包含了元素操作的方法(行为)
所以可以说是结构体是一种特殊的类
关于定义方面
struct与class的区别
在C++中struct与class唯一的区别就是默认的访问权限不同
- struct默认的权限是公有
- class默认权限是私有(private)
有说C++语言里面struct里面是可以写函数的,C语言不行,但是尽管结构体也是可以包含成员函数的,但是很少会这样做,通常情况下结构体的声明只会包含成员变量,而且结构体的声明通常不包括public和private
面向对象
使用现实世界的概念抽象地思考问题从而自然地解决问题
C++面向对象的三大特性: 封装、继承、多态
封装
任何对象都有一组数据和操作,对象实现了数据和操作相结合,将它们视为一个独立的单元的行为就是 封装,相同特征的一组对象进行抽象就形成了类。
意义:
- 将属性和行为作为一个整体,用来表达生活中的的事物
- 将属性和行为加以权限控制(在类的外部不能直接访问类内成员)
可以通过指针变相的访问private类型的成员,但是一般不建议使用
访问权限
public 公共权限 成员在类内可以访问,在类外也可以访问
private 私有权限 成员在类内可以访问,在类外不可以访问 在继承中子成员可以访问父成员的内容
protected 保护权限 成员在类内可以访问,在类外不可以访问 在继承中子成员不可以访问父成员的内容
将成员属性设置为私有可以控制读写成员值的权限,另外对于写权限更容易实现检测数据的有效性
使用类内函数完成上面的两部分内容,使用不同的函数来控制读写,来控制读写权限,然后通过在读写中添加检测数据的代码来检测输入的数据是否有效。
例如以下代码:
//#include <fstream>遇到了一个没有见到的问题,说是不能使用不完整的类型,但现在我把它注释掉也是可以运行的
#include<cstring>
#include <iostream>
using namespace std;
class person
{
private:
string name; //把这个名字设置为只读不可写的类型
int age; //把年龄设置为可读可写的类型
int password; //把密码设置为可写不可读的类型
//针对于上面的三个情况,可以对一个成员的读和写方分别写出类内函数,以达到控制权限的目的
public://定义函数将函数设置为公共权限
string showName()
{
return name;//名字只读不可写,只是输出即可
}
void getage(int inage)//这个是写年龄的过程
{
if (inage < 0 || inage>100)//进行数据检测,保留符合条件的数据
{
age = 0;
cout << "Wrong age!" << endl;
return ;//跳出函数
}
age = inage;
}
int showage()
{
return age;
}
int getpass(int pass)//写密码
{
password = pass;
}
};
int main()
{
person example;
cout << "名字是: " << example.showName() << endl;
example.getage(1000);//不满足条件会输出0;
cout << "年龄是: " << example.showage() << endl;
example.getage(18);
cout << "年龄是: " << example.showage() << endl;
}