类 与 对象

这篇博客介绍了C++面向对象编程的三大特性:封装、继承和多态。通过实例展示了如何创建类、定义对象、使用构造函数以及析构函数。还探讨了对象成员、参数初始化、拷贝构造函数和初始化列表的概念。最后,通过学生类和圆的周长计算展示了类的实用应用。
摘要由CSDN通过智能技术生成

c++面向对象编程最主要的三个特点:封装,继承,多态。

类与对象

1.世上万事万物都可以抽象成对象,具有相同属性的对象的集合称为类

2.每个对象都有成员属性(自己的属性),成员函数(自己的行为)

3.class与struct的区别

在c++中sturct和class唯一的区别在于默认的访问权限不同,sturct默认权限为公共,class默认权限为私有

#include"iostream"
using namespace std;
#include<string>
class c1 {
	int A;
};
int main() {
	class c1 p;
	p.A = 10;//错误,默认访问权限为私有
	
	return 0;
}
#include"iostream"
using namespace std;
#include<string>
struct c2 {
	int a;
};
int main() {
	struct c2 p;
	p.a = 10;//访问权限为公共的
	
	return 0;
}

例如:求圆的周长

#include"iostream"
using namespace std;
#define Π 3.14
class yuan {
public:
	int r;//成员属性:圆的半径r
	double zhouchang() {
		return 2 * Π * r;
	}
};//成员行为,成员函数:圆的周长
int main() {
	class yuan p;
	p.r = 10;//赋值圆的半径
	cout << "圆的周长为:" << p.zhouchang() << endl;;
	return 0;
}

例:设计一个学生类,属性有名字和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

#include"iostream"
using namespace std;
#include<string>
class student {
public:
	string name1;//成员属性
	int id1;
	void show_name1_id() {
		cout << "学生姓名"<<" " << name1<<endl << "学生学号" <<" "<< id1 << endl;
	}//成员行为 成员函数
};
int main() {
	class student p;
	p.name1 = "徐";
	p.id = 3344;
	p.show_name1_id();
	return 0;
}

2.对象的定义

定义好类之后,直接书写对象名

<类名><对象名>

3.类的封装

 类的关键字

public:					//共有成员
protected:				//保护成员
private:				//私有成员

构造函数和析构函数

构造函数特点:

1.不需要写void数据类型

2.构造函数支持函数重载

3.构造函数的函数名与类名是一致的

4.用户如果自己不写构造函数的话,编辑器会自动生成一个空实现的构造函数

空实现的构造函数:

1.无形参值

#include"iostream"
using namespace std;
#include<string>
class student{
public:
	student() {cout<<"这是一个不带参数的构造函数"<<ensl;};
//private:
	


int main() {
	student p;
	return 0;
}

带参数的构造函数

#include"iostream"
using namespace std;
#include<string>
class student{
public:
	student(int age) {
		m_age = age;
		cout << "这是一个带参数的构造函数" << endl;
	};
private:
	int m_age;


int main() {
	student p;
	p.m_age(5);
	return 0;

3.拷贝构造

#include"iostream"
using namespace std;
#include<string>
class student{
public:
	student(student & t) {
		
		cout << "这是一个拷贝构造函数" << endl;
	};
private:
	int m_age;


int main() {
	student p2(p1);
	return 0;
}

析构函数:

~student() {

	}

参数初始化

一般初始化:

#include"iostream"
using namespace std;
#include<string>
class person{
public:
	person(int a=0, int b=0, int c=0) {
		m_a = a;
		m_b = b;
		m_c = c;
	}
	void print() {
		cout << m_a <<" " << m_b<<" " << m_c <<" " << endl;
	}//一般初始化
private:
	int m_a;
	int m_b;
	int m_c;
};
int main() {
	person p(12, 45, 78);
	p.print();
	return 0;
}

初始化列表:

#include"iostream"
using namespace std;
#include<string>
class person{
public:
	person(int a=0, int b=0, int c=0) :m_a (a),m_b (b),m_c(c){}//初始化列表
	void print() {
		cout << m_a <<" " << m_b<<" " << m_c <<" " << endl;
	}
private:
	int m_a;
	int m_b;
	int m_c;
};
int main() {
	person p(12, 45, 78);
	p.print();
	return 0;
}

对象成员:

当类中成员是其他类对象时,我们成为该成员是对象成员;

#include"iostream"
using namespace std;
#include<string>
class phone{
public:
	phone(string name="小王") {
		p_name = name;
	}
	string show() {
		return p_name;
	}
private:
	string p_name;
};
class people{
public:
	people(string name, phone t) {
		m_name = name;
		T = t;
	}
	void playgame() {
		cout << m_name << "正在用" << T.show() << "玩游戏" << endl;
	}
private:
	string m_name;
	phone T;
};
int main() {
	phone p("iphone");
	people a("小王", p);
	a.playgame();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值