C++中的类与对象

124 阅读3分钟

类的目的是将有共性的数据与方法封装在一起,加以权限区分,用户只能通过公共方法访问私有数据

类的权限分为三种:private(私有),protected(保护),public(公有)3种权限

定义一个类时,需要一个关键字;class

using namespace std;

class Data
{
private:
	int a;
protected:
	int b;
public:
	int c;
};

通过这样的方法来定义类

其中public为公共权限,类的内外都可访问

protected为保护权限,类内可访问,类外不可访问

private为私有权限,类内可访问,类外不可访问

类的对象:类可以看作用户自定义的数据类型,该类型的变量即是类的对象,也可以是该类型的数组,指针和引用。对象是类的实例,定义一种数据类型只是告诉系统该数据类型的构造,类只是一个样板,以此样板可以在内存中开辟出同样结构的实例——对象

对象访问类成员:

对象的初始化:对象在使用之前必须进行初始。如果一个类的数据成员是公有的,那么其对象的初始化与一般变量,结构变量或变量数组的初始化没有什么区别。

1,普通类对象:用成员访问符"."

2,指针类对象:用成员访问符"->"

我们来看下面这个例子


#include<iostream>
using namespace std;
class MyClassType1 {
	int x, y;
public:
	int getx() {
		return x;
	}
	int gety();
	void displayx();
	void displayy() {
		cout << "y=" << y << endl;
	}
	void setx(int x0) {
		x = x0;
	}
	void sety(int y0) {
		y = y0;
	}
};
void MyClassType1::displayx() {
	cout << "x=" << x << endl;
}

//先在这定义类


```int main() {
	MyClassType1 obj1, * p, objArr[10];
	obj1.setx(111);
	//cout<<obj1.x<<endl; //ERR!
	cout << obj1.getx() << endl;
	obj1.displayx();
	p = new MyClassType1;
	(*p).setx(56);
	p->sety(78);
	int k = (*p).getx();
	int m = p->gety();
	cout << "k=" << k << endl;
	cout << "m=" << m << endl;
	for (int i = 0; i < 5; i++) {
		objArr[i].setx(i + 10);
		objArr[i].sety(i + 20);
	}
	p = &objArr[9];
	while (p >= &objArr[5]) {
		p->setx(88);
		p->sety(99);
		p--;
	}
	for (int i = 0; i < 10; i++)
		cout << objArr[i].getx() << " " << objArr[i].gety() << endl;
	return 0;

类的静态成员 :类的静态成员分为静态数据成员和静态函数成员

类的静态数据成员只有唯一的一份数据复制为该类的所有对象共享。类的静态数据成员需要在类内进行形式化说明,在类外进行实体化说明

类的常量成员:类的常量成员分为常量数据成员和常量函数成员

通过const 修饰的类中的数据成员,它不同于一般的符号常量说明,在成员说明时不能被赋值,而只能在对象被说明时通过构造函数的成员初始化列表的方式来赋值,一旦对象被创建,其常量数据成员的值不可以被修改。任何类内外函数只可以读取其值,不可以修改它的值

class CC{
     int i;
     const int c1;
public:
     const int c2;
     CC(int a,int b):c1(a),c2(b){
        i=c1;
     }
}

常量函数成员:只有权读取相应对象的内容,但是无权改变相应对象的内容,其作为函数的一部分

希望以上的内容能对读者们有所帮助,感谢阅读