C/C++类

一.类和成员变量
用class代表一个类
其他说明均在代码中

#include<stdio.h> 
#include<string.h>

class object//class原理上和struct相同 
{
public:
	int a;
	int b;
	double c;
	double d;
}; 

//访问修饰符:public private。每个成员变量只受最近的前面一个修饰符限制 
int main()
{
	object obj = {1,2,3,4};
	
    printf("%d-%d-%.2f-%.2f\n",obj.a,obj.b,obj.c,obj.d);
    
    object* p = &obj;//指针类型 .111
    
    printf("%d-%d-%.2f-%.2f",p->a,p->b,p->c,p->d);
    
    return 0;
}

二.成员函数和this指针
定义在 class内的函数 同样可以被修饰符修饰

引入this指针:我们要想在test中调用到x,y

#include<stdio.h>
#include<string.h> 
class object
{
private:
	int x;
	int y;
//	第一种办法
//	void test(object* that) 
//	{
//		printf("a = %d,b = %d\n",that->a,that->b);
//	}
public:
    //第二种办法:引入this
    void set(int a,int b) 
    {
    	this->x= a;
    	this->y= b;
	}
    void test() 
	{
		printf("a = %d,b = %d\n",this->x,this->y);
	}
	
	int add()
	{
		return this->x + this->y;//可以理解为 
	}
	 
}; 


int main()
{
	object obj;
	obj.set(10,20);
	obj.test();
    
;
    
    return 0;
}

三.重名问题

this->其实可以省略。编译器会自动给它加上

重名问题:就近原则
(1)当局部变和成员变量重名时,该变量指向的是局部变量。 如果要指定成员变量需要加this->

class object
{
public:
	int a;
	void test(int a)
	{
		printf("%d\n",a);
	}
}; 

(2)在成员函数里,当成员变量和全局变量同名时,指向的是成员变量 如果要指向全局变量要加上 :: a

int a; 
class object
{
public:
	int a;
	void test(int)
	{
		printf("%d\n",a);
	}
}; 

(3)在成员函数和全局函数重名时,指向的是局部变量 如果想指向全局函数加上 :: 符号

四.类的封装
把函数内部隐藏起来,只展示函数的接口
将成员变量设置成private

#include<stdio.h>

class Circle
{
	public:
		int GetX()
		{
			return m_x;
		}
		int GetY()
		{
			return m_y;
		}
		void MoveTo(int x,int y)
		{
			m_x = x;
			m_y = y;
		}
		void SetRadius(int radius)
		{
			m_radius = radius;
		}
		double Area()
		{
			return 3.14*m_radius*m_radius;
		}
	private:
		int m_x;//x坐标 
		int m_y;//y坐标 
		int m_radius;
 } ;
 
 int main()
 {
 	Circle obj;
 	obj.SetRadius(3);
 	
 	printf("Area = %.2f",obj.Area()) ;
 	
 	return 0;
 	
 }
 

五.class的头文件和源文件的分离
将class的成员函数的定义放到class外面

//Object.h
#ifndef __OBJECT_H
#define __OBJECT_H
class Object
{
	public:
		int x;
		void test();
 };
 #endif

保护宏的命名规则
每个头文件中保护宏的名字应当不同。如果相同,则具有相同保护宏的头文件不能被同一个C文件包含。因此,需要制定保护宏的命名规则,其规则如下:
1.以文件名为基础构建宏名,比如示例文件名为“object.h”
2.将文件名中的“.”转换成“”,成为“object_h”
3.全部字符转换成大写,成为“OBJECT_H”
4.最后在前面添加两个“
”,成为完整的保护宏“__OBJECT_H”

//Object.cpp
 #include<stdio.h>
 #include"Object.h"
 void Object::test()
 {
 	printf(" x = %d\n",x);
  } 
#include<stdio.h> 
  #include<string.h>
  
  #include"Object.h"
  int main()
  {
  	Object obj;
  	obj.x =111;
  	obj.test();
  	
  	return 0;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值