C++类与对象

        C++是一种计算机高级程序设计语言,由C语言扩展升级而产生。作为一款面向对象的程序设计语言,同Java一样具备了许多面向对象的特质。本文从头文件的使用、类的定义、数据成员成员函数的创建等基础角度来介绍基本的C++面向对象程序设计的语法知识。


  • 头文件Person.h:

#pragma once
//#pragma once这个一建头文件编译器自动书写,目的是防止头文件被重复包含,知道作用即可,不用刻意管它

#include <string> //引用c++头文件,可以把string看作字符串类型,目前把string看作一种数据即可
using namespace std;
/*
* 例如 int a;      //变量a是一种int类型
*      string b;   //对象(变量)b是一种字符串类型
*/

//正式建Person类
class Person 
{

//成员变量,体现类的属性
private://私有的
	int Page;
	string Pname;

//成员函数或者叫成员方法,体现类的行为
public://公共的
	Person();//默认构造函数,因为没有参数列表,所以被叫做默认构造函数
	/*************************************************************************************
	* 功  能;为对象的成员变量初始化
	* 参  数:无   解释:如果没有形参列表即为默认的构造函数
	* 返回值:无   解释:所有的构造函数都没有返回值(规定) 
	**************************************************************************************/

	Person(int age,string name);//自定义构造函数 
	/*************************************************************************************
	* 功  能:为对象的成员变量初始化
	* 参  数;age    为对象的成员变量Page赋值
	*         name   为对象的成员变量Pname赋值
	* 返回值:无     解释:所有的构造函数都没有返回值(规定)
	*************************************************************************************/

	void study();
	/************************************************************************************
	* 功  能:描述人类所实例出对象的学习行为
	* 参  数:无
	* 返回值:无 
	*************************************************************************************/

	void setAge(int age);
	/***********************************************************************************
	* 功  能:为当前的对象设置年龄
	* 参  数:age 相当于为成员变量Page赋值
	* 返回值:无
	************************************************************************************/

	int getAge();
	/***********************************************************************************
	* 功  能:得到当前对象的年龄
	* 参  数:无
	* 返回值:返回当前对象的年龄值
	************************************************************************************/

	void setName(string name);
	/***********************************************************************************
	* 功  能:为当前的对象设置姓名
	* 参  数:name 相当于为成员变量Pname赋值
	* 返回值:无
	************************************************************************************/

	string getName();
	/***********************************************************************************
	* 功  能:得到当前对象的年龄
	* 参  数:无
	* 返回值:返回当前对象的姓名
	************************************************************************************/

};

  • Person.cpp:

//在这个源文件中把Person所涉及的函数实现,因为Person.h这个文件中只是写了对应函数的声明而未对相应的函数实现
#include "Person.h"//包含Person的头文件,因为是自定义的头文件,所以用双引号
#include <iostream>
using namespace std;

//分别实现Person类的函数
Person::Person() 
{
}

Person::Person(int age, string name) 
{
	Page = age;
	Pname = name;
}
/*
* Person::              表示这个函数属于Person这个类
* Person                表示函数名
* (int age,string name) 表示参数列表
* {}                    表示函数体
* 上面两个函数都是构造函数,用来实例对象,也即为实例出的对象的成员变量赋值
* 上面两个函数功能类似,可以放在一起理解
*/

void Person::study() 
{
	cout << "热爱学习";
}
void Person::setAge(int age) 
{
	Page = age;
}

int Person::getAge() 
{
	return Page;
}

void Person::setName(string name) 
{
	Pname = name;
}

string Person::getName() 
{
	return Pname;
}
/*
* string   表示这个函数返回值类型
* Person:: 表示这个函数属于哪个类
* getName  表示这个函数的名字
* ()       括号里面的表示参数列表
* {}       表示这个函数的函数体
* 以上五个函数结构类似可以放在一起理解
*/

  • main.cpp:

#include <iostream>//c++头文件引用
#include <cstdio>//c++风格的c头文件引用
/*
* 原来你是这样写的#include <stdio.h> ,只需要把.h去掉,前面加个c就可以。其他c头文件类似即可
* 例#include <math.h>  => #include <cmath>
*/
#include <string>//引用c++头文件,可以把string看作字符串类型,目前把string看作一种数据即可
/*
* 例如 int a;      //变量a是一种int类型
*      string b;   //对象(变量)b是一种字符串类型
*/
using namespace std;
#include "Person.h"//引用Person类的头文件



int main() 
{
	Person zs = Person(20,"张三");
	/*
	* Person 类名,可以把它看作数据类型
	* zs    通过Person类这个人类实例出的对象,可以看作一个变量
	* Person(20,"张三")调用构造函数为zs这个对象的数据成员赋值
	*/

	string name = zs.getName();//通过zs这个对象调用它的getName函数
	int age = zs.getAge();//通过zs这个对象调用它的getAge函数

	cout <<"姓名: "<< name << " 年龄: "<<age<<" ";
	zs.study();//通过zs这个对象调用它的study函数



	/*
	* 1,什么是面向过程,什么是面向对象?
	* 例:如何把大象装进冰箱中
	* 面向过程:第一步打开冰箱,第二步把大象装进冰箱,第三步关闭冰箱
	* 面向对象:找到一个对象把大象装进冰箱,不用管这个对象怎样把大象装进冰箱
	* 
	* 2,类是什么,对象是什么?
	* 类:把一些具有相同属性和行为的事物抽象成一个类,比如人这个类,人都用姓名,年龄
	* 对象:定义类就是为了实例对象,比如人类实例出一个对象就张三
	* 数据成员体现对象的属性:比如,张三有年龄age有姓名name
	* 成员函数体现对象的行为:比如,张三热爱学习
	* 
	* 3,构造函数的作用?
	* 构造函数就是为了给创建的对象的数据成员赋值
	* 例如:Person zs = Person(20,"张三")
	* 通过Person类创建了一个对象zs,后面的构造函数的调用Person(20,"张三")
	* 就是分别给zs这个对象的数据成员Page赋值为20,Pname赋值为"张三"
	* 
	* 4,类与对象
	* 把类看作一种特殊的数据类型,把对象看作一种特殊的变量即可
	* 例 Person zs;
	*     int    b;
	* 创建类是为了实例对象,使用这个对象进行一些操作
	*/

	return 0;
}

  • 总结

        面向过程与面向对象之间是一种处理问题的思维模式的不同。C++是C语言的扩充,其既支持面向过程的C程序的所有内容,又添加了面向对象的内容和扩充,作为一个合格的码农,面向对象是必不可少的修行之路。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值