(三)C++中的静态成员、this指针、友元函数与运算符重载

本文详细介绍了C++中的静态成员,包括static关键字及其使用,探讨了类的大小和内存布局。此外,讲解了this指针在方法中的作用以及常函数的概念。接着,阐述了友元函数和友元类如何打破访问限制,并讨论了运算符重载的三种方式,强调了在处理私有属性时友元函数的重要性。
摘要由CSDN通过智能技术生成

C++中的静态成员与this指针

一、静态成员

1、static 关键字

  • 静态属性只能在全局范围内进行初始化赋值
  • 静态方法可以直接通过类名进行访问,也可以通过对象名进行访问
class Teacher {
private:
	char* name;
public:
	//计数器
	static int total;
public:
	Teacher(char* name) {
		this->name = name;
		cout << "Teacher有参构造函数" << endl;
	}
	~Teacher() {
		cout << "Teacher析构函数" << endl;
	}
	void setName(char* name) {
		this->name = name;
	}
	char* getName() {
		return this->name;
	}
	//计数的静态函数
	static void count(){
	    total++;
	    cout << "total:" << total << endl;
	}
};

//静态属性初始化赋值
int Teacher::total = 10;

void main() {
    Teacher::total++;
	cout << Teacher::total << endl;
	//直接通过类名访问
	Teacher::count();
	cout << Teacher::total << endl;
	//通过对象名访问
	Teacher t1((char*)"JACK");
	t1.count();
	cout << Teacher::total << endl;
	getchar();
}

二、类的大小

C/C++ 内存分区:栈、堆、全局(静态、全局)、常量区(字符串)、程序代码区
普通属性与结构体具有相同的内存布局

class A {
public:
	int i;
	int j;
	int k;
};

class B {
public:
	int i;
	int j;
	int k;
	void myprint() {
		cout << "打印" << endl;
	}

};

void main() {
	cout << sizeof(A) << endl;
	cout << sizeof(B) << endl;
	getchar();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值