c++的类

1.基础语法

class 类名
{
访问权限:

属性/行为

};

访问权限有三种:

1.public 公共权限(类内可以访问,类外也可以访问)
2.protected 保护权限(类内可以访问,类外不可以访问)
3.private 私有权限(类内可以访问,类外不可以访问)

注:
protected 保护权限和private 私有权限的区别在如果有父类的话:
子类可以访问父类中protected的内容,
但不可以访问父类中private的内容

例:

#include<iostream>
#define PI 3.14
using namespace std;
//设计一个圆类,求圆的周长 

//class代表一个类,类后为类的名字 
class Circle 
{
	//访问权限
public:
	
	//属性
	//半径
	int m_r; 
		
	//行为
	// 获得圆的周长
	double Circle_C()
	{
		return 2*PI*m_r; 
	} 
	
};

int main()
{
	//通过圆类,创建具体的圆
	Circle c1;
	//给圆对象的属性进行赋值
	c1.m_r = 10;
	cout<<"圆的周长: "<<c1.Circle_C()<<endl;
	
} 

2.struct和class区别

在c++中 struct和class唯一区别在默认的访问权限不同

struct 默认权限为公共
class 默认权限为私有

例如:

#include<iostream>
using namespace std;

class C1
{
	int m_A; //默认是私有权限		
};

struct C2
{
	int m_B; //默认是公共权限 
}; 

int main()
{
	C1 a;
//	a.m_A = 10; 报错,因为类默认是私有权限 
	
	C2 b;
	b.m_B = 10;
}

3.构造函数丶析构函数和拷贝函数及调用方法

c++利用构造函数析构函数解决了对象的初始化和清理,这两个函数将会被编译器自动调用,完成对象的初始化和清理,因此如果我们不提供构造函数和析构函数,编译器会自动生成,但生成的函数为空函数.

构造函数:主要作用于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用.
析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作

构造函数语法:类名(){}

  1. 构造函数没有返回值也可以不写void
  2. 函数名称与类名相同
  3. 构造函数可以有参数,因此可以发生重载
  4. 程序在调用对象时候会自动调用构建,编译器会自动调用,无须手动调用.且自会调用一次
#include<iostream>

using namespace std;

class Person
{
public:	
	Person()//无参 
	{
		cout<<"构造函数的无参调用"<<endl; 
	}
	Person(int a)//有参 
	{
		age = a; 
		cout<<"构造函数的有参调用"<<endl; 		
	} 
	Person (const Person&p) //拷贝 
	{
		//将别人身上的属性传递到自己身上 
		age = p.age;
		cout<<"拷贝构造函数的调用"<<endl; 
	}
	
	int age; 
};

int main()
{
//三种调用方法
//一 
	Person p1; //构造函数的无参调用 	
	Person p2(10); //构造函数的有参调用 
	Person p3(p2);//拷贝构造函数的调用
	cout<<"p2: "<<p2.age<<endl; 
	cout<<"p3: "<<p3.age<<endl; 
	
//二	

	Person p2 = Person (10);
	Person p3 = Person (p2); 
	
//三	
	Person p2 = 10;
	Person p3 = p2; 
	
} 

析构函数语法:~类名(){}

  1. 析构函数没有返回值也可以不写void
  2. 函数名称与类名相同,在名称前面加上符号~
  3. 构造函数不可以有参数,因此不可以发生重载
  4. 程序在调用对象销毁前,编译器会自动调用,无须手动调用.且自会调用一次
#include<iostream>

using namespace std;

class Person
{
public:	
	~Person()
	{
		cout<<"析构函数的调用"<<endl; 
	}
};

int main()
{
	Person p1; //析构函数的无参调用 
} 

4.this指针概念

this指针指向被调用的成员函数所属的对象

this指针式隐含每一个非静态成员函数内的一种指针 this指针不需要定义,直接使用即可

this指针的用途

当形参和成员变量同名时,可以用this指针来区分
在类的非静态成员函数中返回对象本身,可以用return *this

#include<iostream>

using namespace std;

class Person
{
public:
	//解决名称冲突 
	Person(int age)
	{
		//这里的this代表的含义是,下面定义的p中的age 
		this->age = age;
		cout<<age<<endl;
	}
	
	void PersonAddAge(Person &p)
	{
		this->age += p.age; 
	} 
	
public:
	int age ;
};

int main()
{
	Person p(10);
	
	Person p1(10);
	p1.PersonAddAge(p);
	cout<<p1.age<<endl; 
	
}

5.友元

在程序里,有些私有属性,也想让类外特殊的一些函数或者类经行访问,就需要利用友元的技术.

友元的目的就是让一个函数或者类 访问另一个类中的私有成员

友元的三种实现

  1. 全局函数做友元
  2. 类做友元
  3. 成员函数做友元
#include<iostream>
#include<cstring>
using namespace std;

class Builbing 
{
	//友元 
	friend void visit(Builbing &b);
public:
	Builbing()
	{
		m_SittingRoom = "客厅";
		m_BedRoom = "卧室";
	 } 
public:
	string  m_SittingRoom; //客厅 

private:
	string m_BedRoom; //卧室 

};
//全局函数做友元 
void visit(Builbing &b)
{
	cout<<b.m_SittingRoom<<endl;
	//可以访问类中的私有成员 
	cout<<b.m_BedRoom<<endl; 
 } 

int main()
{
	Builbing  b;
	visit(b);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值