c++类自探索2

b站找到一个不错的视频

1类的引入

c语言中的结构体是将不同类型变量组合到一起

struct student
{
char name[20];
int age;
}

而在c++中,其结构体内不止可以定义变量,可以定义函数。改名叫类

1.1类的定义

定义和声明分文件放

person.h

class Person
{
pubilc://成员函数
    void showInfo();
pubilc://成员变量
    char* name;
    int age;
};

person.cpp

void Person::showInfo()
{
  std::cout<<age<<std::end;
}

1.2类的访问

1.2.1访问限定符

public 

  private protected

1.2.2

struct 默认为public,安全性堪忧

1.3类的实例化

类可以理解为一个房屋的图纸。规定房子有几个窗户,材料等等。

根据图纸建造房子就是实例化。

可以实例化很多对象。

person p;

p.

1.4类对象的大小 

class A

{

public:

         void printA

     {

          std::cout<<age<<std::end;

     }

private:

      char age;

};

类中只计算成员变量大小。sizeof(a)=1

类的成员函数放在公共代码段里。因为所有实例对象都会调用相同函数。

1.5this指针

1问题

class Date
{
  pubilc:
         void Setdate(int year, int month, int day)
         {
          _year=year;
          _month=month;
          _day=day;
         }
 private:
        int _year;
        int _month;
        int _day;
}
int main()
{
  Date d1;
  Date d2;
  d1.Setdate(2021,2,20);
  d2.Setdate(2022,4,10);

上述代码看起来没问题,但容易忽略一个细节,类中成员函数是公用的,它怎么知道是d1而不是d2调用的它。

2this指针

用this解决这个问题。

//上述代码完整应该是这样的

class Date
{
  pubilc:
         void Setdate(Date* this,int year, int month, int day)
         {
         //生成一个类指针
          this->_year=year;
          this->_month=month;
          this->_day=day;
         }
 private:
        int _year;
        int _month;
        int _day;
}
int main()
{
  Date d1;
  Date d2;
  d1.Setdate(&d1,2021,2,20);
  d2.Setdate(&d2,2022,4,10);//实参里是类的地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值