c++类与对象入门

c语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过步骤解决问题
c++面向对象,关注的是对象,将一件事情拆分成不同对象,靠对象之间的交互完成

类的定义

class className
{
     //类体:由成员函数和成员变量组成  
};

class为定义类的关键字,className为类的名字,{}中为类的主体,类中的元素为类的成员,类中的数据为类的属性,默认访问私有
struct也能定义类,默认访问共有

class A
{
 public:   
    //成员函数
    void fun()
    {}//声明加定义
    //成员变量
  private:
  int a;
  int b;
  char c;  
};
int main()
{
    A a;
    a.fun();
    a.a;//非法
}


//-------------------------------------------
class B  //b.h
{
    void fun();//只声明
}
//b.cpp
void B::fun() //类外面定义 要加作用域声明符::
{
    
}

访问限定符:public private protected
在类外可以直接访问public!! 不能访问private

定义的类不占内存,定义类的对象占内存

用类类型创建对象的过程,称为类的实例化!!,实例化出来的对象,占用实际的物理空间,储存类成员的变量。

封装
将数据和操作数据的方法进行有机的结合,隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互。


内存区域
系统内存
栈(高地址向低地址)编译器自动管理
//共享内存映射段
堆(低地址向高地址)
数据段(存放全局变量与静态变量)
代码段(常量,字符串)
-------------------------------------------------------------------------
一个空类 占一个字节!!只要一个函数也占一个字节!!
vs默认对其是8 Linux默认是4

this 指针

class Data
{
    public:
        void setData(int year,int month)
        {
            _year=year;
            _month=year;
        }
        void display()
        {
            cout<<_year<<" "<<_month<<endl;
        }
    private:
        int _year;
        int _month;
}
int main()
{
    Data d;
    d.setDate(2019.3);
    d.display();//display(Data* const this)
    Data d2;
    d2.setData(2019.2);
    d2.display();
    return 0;
}

this 指针
c++编译器给每一个“成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象,在函数体中的所有成员变量的操作,都是通过该指针去访问。即用户不需要来传递,编译器自动完成。

const int* p1;  //const 修饰int,指向的空间可以变,指向的内容不能变
int* const p2;//const 修饰指针,指针指向空间不能变 指向的内容可以变

this指针的特性
1.this指针的类型:类类型*const
2.只能在“成员函数”的内部使用
3.this指针的本质实际是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。
4.this指针是成员函数第一个隐含的指针形参,一般情况通过ecx寄存器自动传递,不需要用户传递
5.this指针不能为空!!做解引用的相关操作this指针一定不能为空!! 不适用this指针可以为空

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值