类的声明基础

103 阅读1分钟

类的声明基础

类与对象的声明

类的定义:具有相同属性和行为的对象集合,如人类就是一个集合,小华就是这个类的一个具体个体,可以称为对象

示例:

class C_Person 
{
public:
 int age;
 void eat(){}
};

int main()
{
  C_Person p;  //栈区声明对象
  p.age;
  p.eat();
  C_Person *p1 = new C_Person;//堆区申请对象
  p1->age;
  p1->eat();
  delete p1;
 return 0;
}

用class来表示一个类,public表示访问修饰符,其中数据成员age相当于属性,函数eat相当于行为。除了在static修饰的类的成员比较特殊,其他成员都需要通过对象来调用

访问修饰符

访问修饰符 作用范围 补充
public 类外可见 C++的结构体默认是public
protected 类内子类可见
private 类内可见 在类内不写访问修饰符,默认为private

友元

1.友元函数

#include <iostream>
using namespace std;

class C_Stu 
{
private:
 int age;
 friend int getAge(C_Stu& stu);
 friend void setAge(C_Stu& stu, int iAge);
};

void setAge(C_Stu &stu,int iAge)
{
 stu.age = iAge;
}
int getAge(C_Stu& stu)
{
 return stu.age;
}

int main()
{
 C_Stu stu1;
 setAge(stu1, 10);
 int iAge = getAge(stu1);
 cout << iAge << endl;
 return 0;
}

结果: 从结果可以看出,友元函数使用friend来修饰,声明一个函数为类的友元函数,改函数可使用类的私有成员

  1. 友元类
class C_Teacher 
{
public:
  void setAge(C_Stu& stu, int iAge,string iName)
  {
  stu.age = iAge;
    stu.name = iName;
  }
private:
 char course;

};
class C_Stu 
{
protected:
  string name;
private:
 int age;
 friend C_Teacher;
};

声明一个C_Stu的友元类为C_Teacher,此时C_Teacher可以使用C_Stu中private,protected修饰的数据成员,可以总结使用protected修饰的成员的两种方法为:继承和友元,使用private成员的方法为友元。

  1. 特点
  • 不受访问修饰符的影响
  • 可以有多个友元
  • 缺点是破坏了类发封装性

本文使用 mdnice 排版