单例设计、this指针,这些不容错过的C++知识点

学习目标

学习单例设计模式、this指针的使用在c++中非常重要!
在这里插入图片描述


学习内容

  • 单例:单个实例(对象),创建一个对象(实例),创建一个类的实例
  • 设计模式:程序员的经验总结

? this指针:
this指针用来指向调用成员函数的对象,谁调用方法,this就指向谁
this作为隐式参数传递给方法,每一个非静态成员方法中都有this指针

用法:
1、当形参与成员变量同名时,this指针用来区别
2、在类的非静态成员方法返回当前对象时,用return *this


学习代码

?单例设计模式:

#include<iostream>
using namespace std;

//单例设计模式
class chairman {
private:
	chairman() {

	}
	//创建一个拷贝构造函数,防止创建多个对象
	chairman(const chairman& c) {

	}
	//创建一个静态实例,要私有化
	static chairman* singleman;
public:
	
	 static chairman* getInstance() {
		return singleman;
	}
};

//类外创建一个实例指针
chairman* chairman::singleman = new chairman;

int main() {

	chairman* m1 = chairman::getInstance();
	chairman* m2 = chairman::getInstance();
	cout << (m1 == m2) << endl;//地址相等,证明为单例

	//chairman* m3 = new chairman(m1);//会调用编译器自动生成的拷贝函数,构造出一个新对象出来
	//cout << (m1 == m3) << endl;




	return 0;
}

?this指针:

#include<iostream>
#include<string>
using namespace std;

class Person 
{
public:
	string name; 
	int age;

	Person() {

	}
	Person(string name, int age) {
		this->name = name;//若成员变量名与形参相同或局部变量相同时,可以使用this指针分出
		this->age = age;
	}
	Person& getolder(Person p1) {
		//在类的非静态成员方法返回当前对象时,用return* this
		if (age > p1.age) {
			return *this;
		}
		else {
			return p1;
		}
	}


};


int main() {
	Person p1("zijia", 21);
	cout << "姓名:" << p1.name << endl;
	cout << "年龄为:" << p1.age << endl;
	Person p2("danxia", 23);
	cout << "姓名:" << p2.name << endl;
	cout << "年龄为:" << p2.age << endl;

	Person p3=p1.getolder(p2);
	cout << p3.age << endl;


	return 0;
}

代码实现

单例设计模式:
在这里插入图片描述
this指针:
在这里插入图片描述



版权声明:本文为weixin_45930808原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。