从C到C++快速入门(10. this指针、访问控制、构造函数)

this指针:成员函数实际上隐含一个this指针

如上一篇,定义了 void print(student *this){
cout<name<<" "<score<<endl;
}

struct和class区别:

struct里的成员默认是public(公开的)
class里的成员默认是private(私有的)

如果定义了个class 和main ,那么main是访问不到class的, 所以我们需要在class中加入public(这里一般数据还是设置为private比较好,这样main改不了数据,而将函数(如print)改为public)。 即可以用stu.print();
不能用 stu.name或 stu.score。

那我们要如何才能访问到name和score呢?
可用 string get_name() { return name; }double get_score() { return score; }

如何修改name 和 score呢?
用着上面两个函数取代stu.name和stu.score
直接在main中用stu.set_name(“Li Ping”);
stu.set_score(78.5);

示例代码:

在这里插入图片描述

student stu ; 在创建一个类对象时,会自动调用称为“ 构造函数 ”的成员函数(如果我们没定义构造函数,会生成默认的构造函数)

构造函数:函数名和类名相同且无返回类型的成员函数 如student(){ }
类名 : 如 class student { }; 当中的student就是类名

程序在main中运行 student stu;时, 会跳转到构造函数

在这里插入图片描述
在这里插入图片描述

也可以用非默认构造函数,即加参数等
如student(string n, double s)
{
name = n; score = s ;
cout << “构造函数\n”;

}
int main(){
student.stu(“zifuchuan”, 80); // 不能跟之前一样用 student stu;
}

那如果想在main函数中用默认构造函数student stu;
则可在构造函数中加多student(){ }

示例代码:

在这里插入图片描述

在这里插入图片描述

C++调试:

  • 设置断点,在某处点击出现光标 按F9
  • 程序跳转到断点处 按F5
  • 运行一次 按F11(跳入函数内等)
发布了41 篇原创文章 · 获赞 1 · 访问量 489

猜你喜欢

转载自blog.csdn.net/weixin_44773006/article/details/103424406