栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++(静态成员变量、函数、this指针)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++(静态成员变量、函数、this指针)

静态成员变量及函数

使用static关键字定义,需要注意静态变量不单独属于某一个对象,所有该类的对象都可以访问同一个静态变量,但是私有静态变量不能共享。成员函数一样。

class car
{
	public:
		static string m_name;//静态成员变量
		//静态成员函数只能访问静态变量,因为静态成员函数所有对象共享,故调用时里面如果使用了非静态变量
		//又因为静态成员函数不属于类对象本身,则编译器无法识别调用的是哪个对象的非静态变量
		//更简单的说,当直接使用域作用符,如car::nameIs("BWM",1);里面包含非静态变量
		//但是并不能知道调用的是谁的num变量,甚至这个类还没创建过对象,那怎么用
		static void nameIs(string name)//static void nameIs(string name,int num)
		{
			m_name = name;
			//m_num = num;
			cout<<"The car's name is "< 

成员变量和成员函数分开存储,只有非静态变量属于类创建的对象的内存空间

class car{}; 
car c1;
cout<
	int a;
}; 
car c2;
cout<
	int a;
	static int b;
}; 
car c3;
cout<
	int a;
	static int b;
	void nameIs(){}
}; 
car c4;
cout< 

当调用成员函数的时候,该对象会在函数内调用一个this指针,当然,是隐式的,我们虽然看不到,但是要知道是这么回事,指针指向当前的对象,故,调用的函数也是当前对象的函数了

this指针

this指针是本身就存在的,我们直接使用,其本质是一个指针常量,以下的this指针:car* const this=当前对象地址;

class car
{
	public:
		car(int num,string name)
		{
			//this指针指向当前对象,在使用构造函数时,将外部的参数传给形参,当形参名字和类内部变量相同
			//this指针指向的表示该对象的变量,而不是传过来的形参
			this->num=num;
			this->name=name;
		}
		this* addNum(car &c);
	private:
		int num;
		string name;
};

//this指针可以返回当前对象

```cpp
//该函数在上类之内, 通过this指针解引用取出当前指向的对象,则可以利用同一个函数链式操作
//在这里不能写成car car::addNum(car &c),因为值返回的话会创建新的副本,返回的不是对象本身
//返回的是当前对象经过拷贝构造函数创建的副本对象,下面的链式调用时,不会是c1的num一直加,而是
//执行第一次相加之后,就是副本的num在相加了
car& car::addNum(car &c)
{
	this->num +=c.num;
	return *this;
}

//函数链式操作如下
car c1(1,"BWM");
car c2(2,"WuLing");
c1.addNum(c2).addNum(c2).addNum(c2).addNum(c2);//此时c1.num结果为1+2+2+2+2
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836388.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号