C++类和对象的学习

C++类和对象的学习,第1张

一:类和对象

  1. 类和对象在内存中的关系 this指针
  2. 类的静态成员:static数据成员和成员函数
  3. 类对象的定义:指针,普通对象,对象数组
  4. 类对象作为函数参数传递方式:按引用
  5. const修饰的对象的使用,mutable的存取权限

二: 每个对象成员属性各不相同,但成员方法共用

this指针:每个对象都有一个指向自身的this指针

this隐藏参数:标识每一个对象的不同

this指针隐藏参数:区别每一个调用公共方法(函数)的对象

类-数据类型 对象-变量

要求用到数据成员的都要this也就是:this->数据成员(所有的)

  1. 每个对象拥有一份属性,属性值不同,成员函数是所有对象共用的
  2. 一个类的不同对象响应相同的信息时,调用的是同一个函数 this指针 隐式传参 show()
  3. 当数据成员与形参名称相同时 this指针区分
  4. this指针指代自身,可以作为返回值

三:类的静态成员static

类的数据成员和成员函数都可以声明为static

静态成员解决数据共享的问题。

之前引用全局变量,现在不用  全局变量有局限性,破坏类的完整性

类的非静态成员函数可以访问类的静态成员

1.static  修饰数据成员  实现数据共享

CStaff.h

#ifndef CSTAFF_H
#define CSTAFF_H

class Staff
{
public:
	Staff();
	Staff(int id,char *name,char *pwd,int prole);
	~Staff();
	static int num;//静态数据成员 放在公有的
private:
	int ID;
	char name[20];
	char pwd[20];
	int role;
protected:

};

#endif

 CStaff.cpp

#include"CStaff.h"
#include
using namespace std;

//不存在对象当中 是所有对象都能够公共访问的
//独立于对象 存在在类当中的
int Staff::num = 1000;//静态成员的初始化

Staff::Staff()
{
	Staff::num++;
}

Staff::Staff(int id,char *name,char *pwd,int prole)
{
	this->ID = id;
	strcpy(this->name,name);
	strcpy(this->pwd,pwd);
	this->role = prole;
    Staff::num++;
}

Staff::~Staff()
{

}


main.cpp

#include
using namespace std;
#include"CStaff.h"

int main()
{
	//静态成员放在public声明
	//静态成员所有对象共享,属于类
	//静态成员不属于任何一个对象
	Staff s1(1001,"lily","123456",1);
 
	// 类名::静态成员变量名
	cout<<"num = "<
  	//const修饰对象 不能访问普通成员函数
	//这里不修饰对象(static修饰成员属性,成员方法,独立于对象) 就可以访问了
	const Staff s1(1001,"lily","123456",1);
    cout<<"num = "<
using namespace std;

int Staff::num = 1000;//静态成员的初始化

Staff::Staff():k(5)//const成员初始化 初始化列表
{
	Staff::num++;
}

Staff::Staff(int id,char *name,char *pwd,int prole):k(5)//const成员初始化 初始化列表
{
	this->ID = id;
	strcpy(this->name,name);
	strcpy(this->pwd,pwd);
	this->role = prole;
    Staff::num++;
}

Staff::~Staff()
{
}

//只能获取num
int  Staff::getNum()
{
	return num;
}

void Staff::getId(int num) 
{
//	cout<ID<ID = num;  //不能修改
//	k = num;   //不可以修改
    cout<
    void getId();   //成员函数
void Staff::getId() 
{
    cout<
#include
using namespace std;
#include"CStaff.h"

int main()
{
    Staff s1(1001,"lily","123456",1);
    cout<<"num = "<

 2.对象指针数组

	//对象指针数组  访问
	CButton *btns[3] = {
	  new CButton(25,18,6,3,"登录"),
      new CButton(45,18,6,3,"退出")
	};
	for(int i=0;i<2;i++)
	{
		btns[i]->show();	
	}
	for(i=0;i<2;i++)  //指针  手动删除
	{
		delete btns[i];
	}
	return 0;

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/717300.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-25
下一篇2022-04-25

发表评论

登录后才能评论

评论列表(0条)