类和堆积的基本概念
类:具有相同特征和行为的事物,可为类
类是有两部分组成:属性和行为
属性:可用数据类型描述的特征
行为:可用函数描述的操作
对象:类的实体化,类的实例化。
类的特点:封装,继承/派生,多态
类的定义
创建语法: (类的定义只能放在在全局区 或 命名空间。放在另一个类也行,叫做类种类)
class 类名
{
//权限限定词
public:
protected:
private:
}; //结尾一定有一个分号;
权限限定的作用 和 对象的创建
类外只能访问public属性下面的 属性 和 行为
类外访问类中的数据只能通过 对象 访问,当然static成员除外
public下的函数称为 接口
protected 和 private 类外都不可访问,但是可以提供共有接口 间接访问
对象的创建有三种方式:1.普通对象 2.对象数据 3.new一个对象
#include<iostream>
#include<string>
using namespace std;
class Student
{
//共有属性
public:
void print()
{
coud << name << '\t' << age << endl;
}
void initData(string name,int age)
{
s_name = name;
s_age = age;
}
//保护属性
protected:
string s_name = "默认";
//私有属性
private:
int age = 0;
};
int main()
{
//普通创建
Student xiaoming;
//xiaoming.s_name = "小明"; 报错,类外不能访问 保护属性和私有属性
xiaoming.initData("小明",15); //可以通过public提供的接口 访问
xiaoming.print();
//对象数组
Student x[4];
for(int i = 0;i < 4;i++)
{
x[i].initData(string("name") + to_string(i),18 + i);
x[i].print();
}
//new一个对象
Student *P = new Student;
p->initData("李明",16);
p->print();
//释放
delete p;
p = nullptr;
return 0;
}
类中没有写在权限限定词下的属性 默认为私有属性
C++中的结构体在一定的程序可以直接当做类,没有写在权限限定词下的属性,默认为共有属性
成员访问(初始化)
通过提供的公有接口使用传参或者返回值,以及默认的方式初始化数据
#include<iostream>
#include<string>
using namespace std;
class MM
{
public:
//传参的方式
void initData(string name,int age)
{
m_name = name;
m_age = age;
}
//返回引用的方式
string& getName()
{
return m_name;
}
int& getAge()
{
return m_age;
}
//输出
void print()
{
cout << M_name << '\t' << m_age << endl;
}
protected:
//默认初始化
string m_name = "默认值";
int m_age = 0;
};
int main()
{
MM mm;
//使用传参的方式访问成员
mm.initData("mm",18);
mm.print();
MM girl;
//使用返回引用的方式访问成员
girl.getName() = "小芳";
girl.getAge() = 18;
girl.print();
return 0;
}