2.类与对象

类中成员关键字介绍:

public :    当类的成员被声明为 public 时,它们可以在任何地方被访问。这包括类的内部、类的派生类(如果有的话)以及类的实例(对象)。

private : 当类的成员被声明为 private 时,它们只能在类的内部被访问。这意味着它们不能从类的外部或派生类中被直接访问。

protected : protected 成员的行为与 private 成员类似,但它们还有一个额外的特性:它们可以在派生类中被访问。这意味着,如果一个类从另一个类继承,并且基类中的某个成员被声明为 protected,则派生类可以访问这个成员。

1.类的申明

1.1 函数范例 

#include <stdio.h>
/*类的使用*/
class A {
public:  //公共的,成员函数

	A()  //类的构造函数,主动调用,无参构造函数,初始化的作用
	{
		printf("construct !!!!!!!\n");
		a = 0;
	}

	A(int data)  //类的构造函数,主动调用,有参构造函数,初始化的作用
	{
		a = data;
	}

	~A()         //类的析构函数 释放对象所占用的资源,没有返回值和参数,释放动态分配的内存,关闭打开的文件
	{
		printf("dddddddddddd\n");
	}

	void show()
	{
		printf("xxxxx\n");
	}

	void setdata(int data)
	{
		a = data;
	}
	int getdata(void);
private:        //私有的,数据成员
	int a;
};

int A::getdata(void)
{
	return a;
}
int main()
{
	//A x;
	A x(100); //初始化传参,调用的是有参构造函数,不调用无参构造函数。
	/*如果要改变a的值,必须在public中定义函数传参接口,否则不能改变private中a的值*/
	//x.a = 100; //错误
	//x.setdata(100); //正确方法

	printf("%d\n",x.getdata());
	x.show();
	return 0;
}

类:由方法成员和数据成员组成,

构造函数和析构函数在public中,主要作用:

  • 确保对象在创建时处于一个有效的状态,
  • 在对象生命周期结束时释放资源,防止内存泄露。

1.2 普通成员函数输出

执行普通成员函数,必须要构造出对象,通过对象调用出普通成员函数。

#include <stdio.h>

class A{
public:
		void func(void)
		{
			printf("XXXXXXXXXX\n");
		}
};

int main(int argc,char *argv[])
{
	A a;
	a.func();

	return 0;
}

1.3 数据成员输出

#include <stdio.h>

class A{
public:
    /**析构函数初始化表初始化变量的值**/
	A():a(0){   
	} 
	
	void setA(int value){
		a = value; 
	}

	void fun(void){
		printf("data = %d\n",a);
	}

private:
	int a;
};

int main(int argc,char *argv[])
{
	A x;
	x.setA(100);
	x.fun();
	return 0;
}

2.类的成员函数

3.常成员、常对象

 函数举例:

#include <stdio.h>

class A{
	public: 
			/*构造函数*/
			A(int a = 50,int data = 1000):b(data){
				this->a = a;
				printf("AAAAAAAAAAA\n");
			}
			/*析沟函数*/
			~A(){
				printf("~~~~~~~~~~~~\n");
			}
			/*常成员函数*/
			void show(void) const{
				printf("b = %d\n",b);
				printf("a = %d\n",a);
			}

	private:
			int a;
			const int b;
};

int main(int argc,char *argv[])
{
	A x(100);
	x.show();
	A y(200);
	y.show();

	A z;
	z.show();

	return 0;
}

4.静态成员 

基于类不基于对象的一种方式

4.1 静态成员函数

#include <stdio.h>

class A{
public:
		static void func(void)
		{
			printf("XXXXXXXXXX\n");
		}
};

int main(int argc,char *argv[])
{
	A a;   //定义对象
	a.func();//基于对象调用函数

	A::func(); //基于类调用函数,函数需要加static

	return 0;
}

4.2 静态数据成员

#include <stdio.h>

class A{
public:
		static void func(void)
		{
			printf("XXXXXXXXXX\n");
		}

		static int data;
};

int A::data = 10;  //静态数据成员类外初始化

int main(int argc,char *argv[])
{
	A a;   //定义对象
	a.func();//基于对象调用函数
	A::func(); //基于类调用函数,函数需要加static

	A x; //定义对象
	x.data = 100;//基于对象赋值变量
    printf("x.data = %d\n",x.data);  
	A::data = 1000;//基于类赋值变量,变量前要加static
    printf("x.data = %d\n",x.data);  
	return 0;
}

5.友元(破环封装)

        它允许一个类或函数访问另一个类的私有(private)和保护(protected)成员。默认情况下,一个类的私有和保护成员只能被该类的成员函数、友元函数或友元类访问。

        friend 对私有的函数都是有效的;

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值