欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++笔记2(类)

程序员文章站 2022-07-15 16:51:44
...


在C语言中我们学习过结构体,C++中又新加了类。两者之间还是有一些差别的。

类和结构体的区别

class与struct在编译过程中基本没有区别,只有缺省的权限不同,class是私有的而struct是共有的。

成员变量和成员函数(属性和方法)

class Student {
public:
	int age;
	int getAge(){
		return age;
	}
};

类和对象

类是指一类人或物,例如:人类,学生,动物,植物。
对象则是指一个单独的个体。

访问修饰符

  1. private:私有权限的成员变量和成员函数,只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。

  2. protected:可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问。

  3. public:公有权限的成员变量和成员函数,可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问。

封装

封装其实就是吧函数和变量编写到类中。

目的:保护数据

简单示例:

#include <iostream>
using namespace std;
class Student {
private:
	int age;
public:
	int getAge(){
		return age;
	}
	void setAge(int a) {
		if (a <= 0 || a > 100){
			cout << "请输入正确的年龄" << endl;
			return;
		}
		age = a;
	}
};
int main()
{
	Student s;
	s.setAge(19);
	cout << s.getAge() << endl;
	return 0;
}

构造函数

  1. 构造函数是类的一种特殊成员函数,一般情况下,构造函数是专门用于初始化对成员变量的,所以最好不要在构造函数中进行与对象的初始化无关的操作。
  2. 构造函数的函数名一定与类的名称完全相同,而且没有返回值(不是说返回值是void或者int,而是说不允许指定返回值)。
  3. 默认存在。

示例:

#include <iostream>
using namespace std;
class Student {
private:
	int age;    //成员变量(属性)
public:
	Student() {
		age = 1;
	}
	Student(int a) {
		age = a;
	}
	int getAge(){ //成员函数(方法)
		return age;
	}
	void grpwup() {
		age++;
	}
};
int main()
{
	Student s;
	s.grpwup();
	cout << s.getAge() << endl;

	Student s1(1);
	s1.grpwup();
	cout << s1.getAge() << endl;
	return 0;
}

析构函数

  1. 对象销毁时调用的函数。
  2. 默认存在。
  3. 不支持函数重载。
#include <iostream>
using namespace std;
class Student {
private:
	int age; //成员变量(属性)
public:
	Student() {
		age = 1;
	}
	Student(int a) {
		age = a;
	}
	~Student() //析构函数
	{
		cout << "game over" << endl;
	}
	int getAge(){ //成员函数(方法)
		return age;
	}
	void grpwup() {
		age++;
	}
};
int main()
{
	Student s;
	s.grpwup();
	cout << s.getAge() << endl;

	Student s1(1);
	s1.grpwup();
	cout << s1.getAge() << endl;
	return 0;
}

因为析构函数在对象销毁时使用,所以以上程序在最后会打印game over。


相关标签: C++ c++