c++学习笔记-第一天

本文介绍了C++中类的常量成员函数和常量对象的概念,强调了mutable关键字的作用。同时,探讨了友元函数的特性及其在访问权限上的例外。此外,讲解了类的静态成员变量和成员函数,特别是静态成员函数的使用场景,如单例模式。最后,讨论了类对象的内存占用情况,明确了非静态成员变量的存储位置和对象大小的影响因素。
摘要由CSDN通过智能技术生成

一、类中常函数以及常对象问题:
1、常函数内无法修改类对象,如有特殊可修改变量,在变量前加mutable关键字;如:

class Person3 {
public:
	Person3(){}
	Person3(int age) {
		m_age = age;
	}
	void showage() const{
		m_age = 4;//错误
		change = 3;//正确
		cout << m_age << endl;
	}

	int m_age;
	mutable int change;
 };

2.常对象
2.1常对象中对象不可修改,除非添加mutable关键字如

class Person3 {
public:
	Person3(){}
	Person3(int age) {
		m_age = age;
	}
	void showage() const{
		cout << m_age << endl;
	}

	int m_age;
	mutable int change;
 };
	int main(void) {
		const Person3 p1(10);
		p1.m_age = 20;//错误
		p1.change=5;//正确
		p1.showage();
		return 0;

} 

2.2常对象只能调用常函数,如:

class Person3 {
public:
	Person3(){}
	Person3(int age) {
		m_age = age;
	}
	void showage() const{
		cout << m_age << endl;
	}
	void func() {
		cout << "调用func函数" << endl;
	}
	int m_age;
	mutable int change;
 };
 int main(void) {
	p1.showage();//正确
	p1.func();//错误
	return 0;
} 

二、友元函数
友元函数可访问设置友元函数的类,但该类无法访问到友元函数内的私有内容
注意点:1、友元函数使用前一定要先声明,包括类,全局函数,都要先定义才能使用友元函数。
三、类的静态成员变量,成员函数
1>成员变量
特点:1、所用对象共享一份数据
2、编译阶段分配内存
3、类内声明,类外初始化
4、可以直接使用类名直接访问
2>成员函数
1、静态成员函数只能访问静态成员变量
原因:普通成员函数调用时会产生this指针指向调用函数的对象,而静态成员函数不会调用this指针,因此无法区分非静态变量。
2、可以用类名调用
使用情景:单例函数
(1)。将构造函数私有化,无法创建多个变量,且无法调用拷贝构造函数
(2)。初始化类内静态变量
设置访问接口
(3)。使用类名访问静态变量赋值。
3、类中函数调用同类型变量时,可以访问私有变量
四、类对象的大小
1、空对象有一个字节的大小,是每个对象在内存上有独一无二的地址
2、成员函数和成员变量分开存储,不占用类空间
3、静态成员变量不占用类空间
总之,只有非静态成员变量才占用类对象内存空间,占用空间满足内存对齐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值