C++ 特殊成员 day5

C++ 特殊成员

C++常成员

  • 常对象:const修饰的对象叫常对象

    • 只能调用常成员函数
      在这里插入图片描述
  • 常数据成员:const修饰的数据,一般写在函数尾部

    • 不能被修改
    • 初始化必须使用初始化参数列表进行初始化
      在这里插入图片描述
  • 常成员函数:用const修饰的函数

    • 在当前函数中不能修改数据成员
    • 可以与普通函数有重载,普通函数优先调用普通成员,常对象只能调用常成员函数,但是普通对象也可以调用常成员函数
      在这里插入图片描述

C++静态成员

  • static对象:static修饰的对象,它是在程序最后被释放的

  • static数据

    • 必须要在类外初始化
    • 静态数据的访问可以不必须要对象,但要类限定名
    • 静态数据依旧受权限限定
    • 静态数据是所有对象公有的,任何对象都可以访问静态数据
      在这里插入图片描述
  • static成员函数:static修饰的函数,一般写在函数前面

    • 静态成员函数访问非静态时候必须指定对象
    • 不能直接访问非静态数据成员
    • 不能用this指针
    • 静态成员函数的访问可以不必须要对象,但要类限定名
      在这里插入图片描述

拓展:单例设计模式

  • 单列设计模式分为:懒汉式与饿汉式
  • 步骤:
    • 构造函数私有化
    • 提供一个全局的静态方法
    • 类中定义一个静态指针,指向唯一对象
  • 懒汉式:无创建单例对象,没有在外面创建对象
#include <iostream>
//懒汉式
class SingleTon
{
private:
	SingleTon();//构造函数私有化
public:
	static SingleTon* pObject;
	static SingleTon* getInstance();
	void print()
	{
		std::cout << "测试" << std::endl;
	}
};

SingleTon* SingleTon::pObject = NULL;
SingleTon::SingleTon()
{
	std::cout << "资源加载" << std::endl;
}

SingleTon* SingleTon::getInstance()
{
	//保证外部只有唯一的对象方式
	if (pObject == NULL)
	{
		pObject = new SingleTon;
	}
	return pObject;
}
int main()
{
	SingleTon* p1 = SingleTon::getInstance();
	SingleTon* p2 = SingleTon::getInstance();
	
	std::cout << p1 << std::endl;
	std::cout << p2 << std::endl;

	p1->print();
	p2->print();
	return 0;
}

  • 饿汉式:直接在外面创建对象了
#include <iostream>
//饿汉式
class SingleTon
{
private:
	SingleTon();//构造函数私有化
public:
	static SingleTon* pObject;
	static SingleTon* getInstance();
	void print()
	{
		std::cout << "测试" << std::endl;
	}
};
//唯一对象
SingleTon* SingleTon::pObject = new SingleTon;
SingleTon::SingleTon()
{
	std::cout << "资源加载" << std::endl;
}

SingleTon* SingleTon::getInstance()
{
	return pObject;
}
int main()
{
	SingleTon* p1 = SingleTon::getInstance();
	SingleTon* p2 = SingleTon::getInstance();
	
	std::cout << p1 << std::endl;
	std::cout << p2 << std::endl;

	p1->print();
	p2->print();
	return 0;
}
  • 运行结果都一样
    在这里插入图片描述

C++友元

  • 友元函数:friend修饰的函数

    • 普通函数成为友元函数
      在这里插入图片描述

    • 以另一个类的成员函数成为友元函数
      在这里插入图片描述

  • 友元类:friend修饰的类
    无论是友元函数还是有友元类只是提供对象在特定场所具有无视权限的功能
    在这里插入图片描述

  • 友元不具有传递性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值