栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习之一:类和对象

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习之一:类和对象

C++的一大特点为面向对象的编程,封装、多态、继承为其三大特性。有关这三者的介绍会在后续逐步进行,首先记载其载体,类和对象。(涉及的内存部分将以我自己的理解展开,若内容较多,后续会重新开展专题整理。)

首先,需要构建一个最简单的类。以一个人为例。若全为public对象(关于public、protected、private会在后续讲到,此处先带着说),那么类的形成为:

#include

using namespace std;

class Person
{
public:
	string name;
	int age;
	void setName(string b)
	{
		name = b;
	}
	void setAge(int a)
	{
		age = a;
	}
	void show()
	{
		cout << "name:" << name< 

作为person,此处基础信息为姓名name及年纪age,同时配以函数设置姓名、设置年纪及显示信息。在主函数可以看到,我们定义了一个类的对象,同时我们通过类的成员函数对对象设置了基本参数。

这边添加一种指针的构建办法,好处在后续记录中会体现,这边只做介绍:

int main()
{
	Person* p= new Person;

	//Person ming;
	//Person* p = &ming;

	int age = 15;
	string name1 = "ming";
	p->setName(name1);
	p->setAge(age);
	p->show();
	system("pause");
}

可以用指针指向新的对象,与注释处可理解为一个意思,但需注意的是,第一种方式申请的对象是在堆内存上,由程序员分配,同时需要由程序员销毁。而注释的方法则为在栈上申请,是由系统分配的,因此也由系统来销毁对象。

与正常构建对象不同,指针调用成员函数或成员变量采用"->",而不是对象用的"."。

言归正传,在构建对象及退出的过程之中实际发生了什么呢,引入了构造函数及析构函数,那为什么在代码上没有体现呢,在C++中,若没有显示定义的构造函数及析构函数,则会由编译器自动生成的构造及析构代替。因此,若想看到过程中发生了什么,或者自己做些什么,我们可以自己定义构造及析构函数。

最简单的:

#include

using namespace std;

class Person
{
public:
	string name;
	int age;
	Person() { cout << "调用构造函数" << endl; }

	~Person() { cout << "调用析构函数" << endl; system("pause"); }
	void setName(string b)
	{
		name = b;
	}
	void setAge(int a)
	{
		age = a;
	}
	void show()
	{
		cout << "name:" << name<setName(name1);
	//p->setAge(age);
	//p->show();
	//delete p;
	//system("pause");
	return 0;
}

结果为:
调用构造函数
name:ming
age:15
请按任意键继续. . .
调用析构函数
请按任意键继续. . .

在定义了构造函数和析构函数后,在生成对象及退出程序,结束对象的作用域后,会调用我们写好的构造和析构函数。此处,若对象直接生成,即第一种写法在栈上申请,则在函数退出时系统会自动清理对象,则自动调用析构函数。若为在堆上申请,则需要程序员手动清理对象,即删除该对象指针后才会调用析构函数。

那么,自己定义构造函数和析构函数有什么好处呢,下篇,我将记载类的构造函数及析构函数的作用,以及多种形式的构造函数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号