C++学习记录--C++基础4

b站黑马程序员C++课程学习笔记

类和对象

C++面向对象的三大特性:封装、继承、多态
C++认为万事万物皆为对象

封装

C++面向对象三大特性之一
封装的意义:

  • 将属性和行为作为一个整体,表现生活中的事物
  • 将属性和行为加以权限控制
    封装意义一:在设计的时候,属性和新闻给写在一起,表现事物
    语法:class 类名{访问权限:属性/行为}
class Student{
public:
	string name;
	int age;
	
	void showStudent(){
		cout << “学生姓名:” << name << ",学生年龄" << age <<endl;
	}
	
}
int main(){
	Student stu1;
	stu1.name = "zhangsan";
	stu1.age = 15;
	cout << stu1.showStudent << endl;
}

封装意义二:将属性和行为赋予不同的权限
公共权限 public 成员 类内可以访问 类外可以访问 儿子可以访问父亲中的保护内容
保护权限 protected 成员 类内可以访问 类外不可以访问 儿子可以访问父亲中的保护内容
私有权限 private 成员 类内可以访问 类外不可以访问 儿子不可以访问父亲的私有内容

struct和class的区别

struct默认权限 公共 public
class默认权限 私有 private

成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以监测数据的有效性(检测写入的数据是否有效,若无效,无法改动)

class Person
{
private:
	string m_Name; //姓名 可读可写
	int m_Age = 18; //年龄 只读
	string m_Idol; //偶像 只写
public:
	void setName(string name)
	{
		m_Name = name;
	}
	string getName()
	{
		return m_Name;
	}
	int getAge()
	{
		return m_Age;
	}
	void setIdol(string idol)
	{
		m_idol = idol;
	}
}
//可以提供公有的方法对私有属性进行操作,实现可读可写等要求
int main(){
	Person p;
	p.setName("张三");
	cout << “姓名:” << p.getName() << "年龄:" << p.getAge() << endl;
	p.setIdol("Kk");
}

对象的初始化清理

构造函数和析构函数

对象的初始化和清理时两个非常重要的安全问题
一个对象或者变量没有初始状态,对其使用后果是未知
同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题
C++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作
析构函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。
析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作

如果我们不提供构造和析构,编译器会提供
编译器提供的构造函数和析构函数是空实现。

构造函数语法:
没有返回值 不用写void
函数名与类名相同
构造函数可以有参数,可以发生重载
创建对象时,构造函数会自动调用,而且只调用一次

析构函数语法:
没有返回值,不写void
函数名和类名相同,在名称前加~
析构函数不可以有参数,不可以重载
对象销毁前,会自动调用析构函数,而且只会调用一次

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

void test01()
{
	Person p; //在栈上创建类实例
}
int main()
{
	test01()
	system("pause");
}

运行结果

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值