学习目标
学习单例设计模式、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版权协议,转载请附上原文出处链接和本声明。