引言  :

在学习用c++实现链表前先补充一点知识,构造函数还有析构函数。

class类:

在c++面向对象编成中类是一个重要的部分,跟c++中的struct有一定的关联,待会会仔细讲讲两者的区别

c++中类的语法是:

// class 类名
//{
//访问权限 public, private ,protected:
//  属性(成员变量)
//    行为(成员函数)
//    };

举例实现:

class hero
{
public:
    int _nums;//英雄数量        //命名方式//属性
    int _hp;//英雄血量
    //行为
    void id(int nums)//简单来说就是创建一个函数来调用创建的变量来实现某些功能;
    {
        _nums = nums;//访问属性
    }//把外部值赋值到属性里

    void addhp(int hp)//同理,这个是实现加血功能
    {
        _hp+= hp;
    }
    void delhp(int hp)//这个是实现扣血功能
    {
        _hp -= hp;
    }
};

int main()
{//通过类来生成对象的过程,叫实列化
    hero jeff;//类的实例化,把他用到主函数中来可以进行调用。
    jeff._hp = 100;//对其中血量进行修改
    jeff._nums = 6;//对数量进行修改
    jeff.addhp(200);//实现加血功能
    cout << "血量为:" << jeff._hp << endl;//验证是否成功
    jeff.delhp(30);//扣血功能
    cout << "血量为:" << jeff._hp << endl;
    cout << "英雄数量为:" << jeff._id << endl;
}

下面是运行图片:


权限:

概念:公共权限 public 类内类外均可访问
 保护权限 protected  类内可访问类外不可访问 子类可以访问
私有权限 private  类内可访问类外不可访问     子类不可访问

 B—>A
A 父类,基类            名字,房子 支付密码   
B 子类 派生类               公有 保护 私有

代码实例:

class people//只要在这个people类中就可以进行修改
{
public:
    int _name;//公有大家都知道的 公共
protected:
    int _hourse;//亲属可以居住 保护
private:
    int _paypass;//本人知道即可 私有

public:
    void name(int name)
    {
        _name = name;

    }
protected:   void hourse(int hourse)
    {
        _hourse = hourse;
    }
private: void paypass(int paypass)
{
    _paypass = paypass;
}

};
class A :public people//继承 儿子继承父亲的某些东西
{
    void hourse(int hourse)
    {
        _name = 10;
        //_paypass = 20;//子类无法访问父类的私有权限 
        _hourse = 69;
    }

};

int main()
{//实例化
    people jeff;
    jeff._name = 66;
    //jeff.hourse = 0;//保护变量类外不可访问
    //jeff.paypass = 1;//私有变量类外不可访问

}


上图显示了不可访问说明了在类外无法访问保护和私有的权限。


struct与class的区别和c++与c中struct的区别:

文字概念:
 struct的访问权限是公有的 class的访问权限是私有的
c++中struct 可以直接定义函数c不行(会报错)

代码:

class s {

    int _ha;//不声明默认变成私有化

};
struct c {

    int liu;//默认共有都可以调用
    void work()
    {
        liu = 1314;
    }
};
int main()
{
    s hahu;
    //hahu._ha = 666;//私有 会报错
    c kkk;
    kkk.liu = 666;
    kkk.work();
    cout << kkk.liu;

}

错误示例

函数调用:

成功调用了struct 构建的函数。

构造函数与构析函数:

构造函数:

注意的点 1 :构造函数不需要返回值
 2构造函数名必须与类名一致
3.构造函数可以有参数

代码示例:

class jeff//在构造的同时就可以对属性进行初始化
{
public: jeff()
    {
    _name = "JETT";
    _weight = 69;
    _hight = 1.78;
    cout << "构造函数默认调用" << endl;

    }
      jeff(string a)
      {
          _name = a;
          cout << "构造函数有参调用" << endl;
      }

  jeff(string a, double b)
  {
      cout << "构造函数有参调用2参" << endl;
  }

private://私有化变量
    string _name;
    double _weight;
    double _hight;
 };


int main()
{
    jeff kk;//实例化
    jeff cc("nba");
    jeff aa{};
    jeff jj = jeff("hhh");

jeff uu("sss",555);


    return 0;
}

运行示例图:

析构函数:与构造函数相对的构造函数是对对象初始化,析构是对函数反初始化,也就是数据清理,减少空间的占用。

注意的点 1:函数名与名一致,并在前面加是~波浪号
 2:函数的返回值不用写
3:不能有参数

例代码:

class niu
{
public:
    niu()
    {
        cout << "构造函数调用完毕" << endl;
    }
    ~niu()//语法~加类名 销毁无需参数
    {
        cout << "析构函数调用完毕" << endl;
    }

};
void test()
{
    niu o;
}
int main()
{
    test();
    niu b;
    int i;
    cin >> i;
    return 0;

}

红线的含义是:

函数走完了test这个函数运行并把作用域销毁了

蓝线的含义是:

函数调用了 niu b 这个实例构造函数 但是没走完 停在输入i 这里所以没有销毁。要等程序完全走完才进行销毁。

结语:至此构造和构析函数已经讲完了了,希望大家能去敲一敲代码巩固一下知识。

该篇为了下一篇链表铺垫,有用的话点点关注点点赞收藏。

更多推荐