C++类和对象的学习【part3:对象特性2.0】

C++类和对象的学习【part3:对象特性2.0】

成员变量和成员函数分开存储

在C++中,类内的成员变量和成员函数分开存储。
只有非静态成员变量才属于类的对象上。
这里一共有四种成员:

  • 非静态成员变量
  • 静态成员变量
  • 非静态成员函数
  • 静态成员函数

具体展示代码如下:

// arrayone.cpp -- small arrays of integers
#include <iostream>

using namespace std;

#include <string>

class Person
{
   
public:
    Person()
    {
   
        mA = 0;
    }
    //非静态成员变量占对象空间
    int mA;
    //静态成员变量不占对象空间
    static int mB;
    //函数也不占对象空间,所有函数共享一个函数实例
    void func()
    {
   
        cout << "mA:" << this->mA << endl;
    }
    //静态成员函数也不占对象空间
    static void sfunc()
    {
   
    }
};

int main()
{
   
    cout << sizeof(Person) << endl;
    
    system("pause");
    return 0;
}

需要注意的是:
一个空的类,内存占用一个字节,目的是区分不同的空对象占用的内存位置。
如果含有非静态成员变量,则占用该成员变量字节数。
含有多个则累加。

this指针概念

this指针指向被调用的成员函数所属的对象
this指针是隐含每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用即可
this指针的用途:

  • 当形参和成员变量同名时,可用this指针来区分
  • 在类的非静态成员函数中返回对象本身,可使用return *this

以下代码为返回对象本身的例子:

Person& PersonAddPerson(Person p)
	{
   
		this->age += p.age;
		//返回对象本身
		return *this;
	}

这样,调用时可采用递归式调用:

p2.PersonAddPerson(p1).PersonAddPerson(p1).PersonAddPerson(p1);

空指针访问成员函数

我们可以定义一个类的指针,但令其为空(暂时不是很理解这是干啥呢)。
这个空指针可以调用成员函数,但要注意有没有用到this指针。
程序主体如下:

//空指针访问成员函数
class Person {
   
public:

	void ShowClassName() {
   
		cout << "我是Person类!" << endl;
	}

	void ShowPerson() {
   
		if (this == 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值