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程序的所有内容,又添加了面向对象的内容和扩充,作为一个合格的码农,面向对象是必不可少的修行之路。