12. this指针
本系列博客是我假期在B站花了一天时间看了一个快速入门C++的视频,大概是4个小时,不过来回截图,整理笔记也花了一大整天;
常规程序
#include<iostream>
struct student{
string name;
double score;
void print(){
cout << name << " "<< score << endl;
}
};
int main(){
student stu;
stu.name="Li Ping";
stu.score = 78.5;
stu.print(); //print(&stu);
}
使用this指针
#include<iostream>
struct student{
string name;
double score;
void print(){
cout << this->name << " " << this->score << endl;
}
};
int main(){
student stu;
stu.name = "Li Ping";
stu.score = 78.5;
stu.print();
}
struct改成class
#include<iostream>
class student{
string name;
double score;
public:
void print(){
cout << this->name << " " << this->score << endl;
}
};
int main(){
student stu;
stu.name = "Li Ping";
stu.score = 78.5;
stu.print();
}
此时,stu.name
和stu.score
都是非法的,因为name, score是student这个类的私有成员。
其他的类内部函数定义为:
#include<iostream>
class student{
private:
string name;
double score;
public:
void print(){
cout << this->name << " " << this->score << endl;
}
string get_name() {return name;}
double get_score() {return score;}
void set_name(string n) {name=n;}
void set_score(double s) {score=s;}
};
int main(){
student stu;
stu.name = "Li Ping";
stu.score = 78.5;
stu.print();
}
int main(){
student stu;
stu.set_name("Li Ping");
stu.set_score(78.5);
stu.print(); //print(&stu);
cout << stu.get_name() << " " << stu.get_score() << endl;//这种方式也可以访问类的私有数据
}
类的构造函数
构造函数:函数名和类名相同且无返回类型的成员函数
C++会给每一个类默认定义一个构造函数:
#include<iostream>
class student{
string name;
double score;
public:
student(){} //默认定义的构造函数,只不过这里把他写出来了
student(string n, double s){ //自定义的构造函数
name = n; score = s;
}
void print(){
cout << this->name << " " << this->score << endl;
}
};
int main(){
student stu("Li Ping", 80.5); //此时调用时传入自定义构造函数指定的参数。但是如果也定义了student(){},那么不需要参数也是可以的。
stu.print();
//student student[3];这句话只不对的
}
student student[3];
:这是非法的,自定义构造函数的类不可以定义数组变量的哟!