1:面向对象

面向对象_访问修饰符_构造与析构函数_this指针_c++

 

 

面向对象_访问修饰符_构造与析构函数_this指针_#include_02

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_构造函数_03

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_构造函数_04

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_#include_05

 

 

 

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_#include_06

 

 

 

 

 以codeblocks举例,在一个工程里面: File-->new -->Class可以建一个类,可以设置类的参数,是否有set get方法,有无构造函数等设置,.h文件主要用来写类的属性和

方法声明,类名.cpp文件里面实现函数,main函数里面负责对象的调用和操作。 

如下:Student.h

#ifndef STUDENT_H
#define STUDENT_H
#include <bits/stdc++.h>
using namespace std;
class Student
{
public:
Student();//构造函数,进行数据的初始化
Student(string name, int age);
virtual ~Student();

string Getname() { return name; }//对类的变量进行封装,便于对私有的属性进行操作
void Setname(string val) { name = val; }
int Getage() { return age; }
void Setage(int val) { age = val; }
int* Getscore() { return score; }
void Setscore(int* val) { score = val; }
void Show(string , int );//在.h文件里面进行函数定义
protected:

private://私有的属性
string name;
int age;
int* score;
};

#endif // STUDENT_H

 

 main.cpp

#include <bits/stdc++.h>

using namespace std;
#include "Student.h"
int main()
{
Student stu1;//;自动调用无参构造函数
cout << "由构造函数初始化的年龄和姓名" <<stu1.Getage() << stu1.Getname() << endl;
Student stu2("小红",12);//有参构造函数
stu1.Show("小明",13);
return 0;
}

student.cpp

/*
* 文件名:
* 描 述:
* 作 者:
* 时 间:
* 版 权:
*/#include "Student.h"
#include <bits/stdc++.h>
using namespace std;
Student::Student()
{
name = "默认名";
age = 100;
cout << "我是(无参)构造函数" << endl;
}
Student::Student(string name,int age){
Student::Setage(age);
Student::Setname(name);
name = Student::Getname();
age = Student::Getage();
cout << "学生" <<name<< "的年龄是" << age << endl;
}

Student::~Student()
{
cout << "我是析构函数,负责对象的回收" << endl;
}
void Student::Show(string name, int age)
{
cout << "学生" <<name << "的年龄是" << age << endl;
}

 

2:访问修饰符

面向对象_访问修饰符_构造与析构函数_this指针_构造函数_07

 

 

 通过为参数设置set和get方法进行私有属性的操作。

1 #ifndef STUDENT_H
2 #define STUDENT_H
3 #include <bits/stdc++.h>
4 using namespace std;
5 class Student
6 {
7 public:
8 Student();//构造函数,进行数据的初始化
9 Student(string name, int age);
10 virtual ~Student();
11
12 string Getname() { return name; }//对类的变量进行封装,便于对私有的属性进行操作
13 void Setname(string val) { name = val; }
14 int Getage() { return age; }
15 void Setage(int val) { age = val; }
16 int* Getscore() { return score; }
17 void Setscore(int* val) { score = val; }
18 void Show(string , int );//在.h文件里面进行函数定义
19 protected:
20
21 private://私有的属性
22 string name;
23 int age;
24 int* score;
25 };
26
27 #endif // STUDENT_H

 

3:构造与析构函数

面向对象_访问修饰符_构造与析构函数_this指针_#include_08

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_#include_09

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_#include_10

 

 

 面向对象_访问修饰符_构造与析构函数_this指针_构造函数_11

面向对象_访问修饰符_构造与析构函数_this指针_#include_12

 

面向对象_访问修饰符_构造与析构函数_this指针_c++_13

 

 

 

 

 

 .cpp文件

面向对象_访问修饰符_构造与析构函数_this指针_#include_14面向对象_访问修饰符_构造与析构函数_this指针_c++_15

1 /*
2 * 文件名:
3 * 描 述:
4 * 作 者:
5 * 时 间:
6 * 版 权:
7 */#include "Student.h"
8 #include <bits/stdc++.h>
9 using namespace std;
10 Student::Student()
11 {
12 name = "默认名";
13 age = 100;
14 cout << "我是(无参)构造函数" << endl;
15 }
16 Student::Student(string name1,int age1):name(name1),age(age1)//初始化列表
17 {
18 //name = name1;
19 //age = age1;
20 name = Student::Getname();
21 age = Student::Getage();
22 cout << "学生" <<name<< "的年龄是" << age << endl;
23 }
24
25 Student::~Student()
26 {
27
28 cout << "我是析构函数,负责对象"<< Student::Getname()<<"的回收" << endl;
29 }
30 void Student::Show(string name, int age)
31 {
32 cout << "学生" <<name << "的年龄是" << age << endl;
33 }

View Code

main.cpp文件

面向对象_访问修饰符_构造与析构函数_this指针_#include_14面向对象_访问修饰符_构造与析构函数_this指针_c++_15

1 #include <bits/stdc++.h>
2
3 using namespace std;
4 #include "Student.h"
5 int main()
6 {
7 Student stu1;//;自动调用无参构造函数,在栈内存中分配空间,自动调用delete回收
8 cout << "由构造函数初始化的年龄和姓名" <<stu1.Getage() << stu1.Getname() << endl;
9 Student stu2("小红",12);//有参构造函数
10 stu1.Show("小明",13);
11
12 Student* stu3 = new Student("岳飞",40);//在堆空间中分配内存
13 cout << "名字是" << stu3->Getname() << endl;
14 delete stu3;//需要手动调用delete释放内存
15
16 return 0;
17 }

View Code

面向对象_访问修饰符_构造与析构函数_this指针_c++_18

 

 

栈空间对象自动释放,通过new占用的堆空间需手工delete释放,析构函数只有一个,不能重载。

 

4:this指针

面向对象_访问修饰符_构造与析构函数_this指针_#include_19

 

 

 

 

 

 

 (*this)返回的是类对象本身。

this的一个总结

作者:你的雷哥

本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。