第二章 面向对象的基本概念之——类的定义

1、面向对象方法中的类

是对具有相同属性和行为的同一类对象的抽象描述,其内部包括属性(本类的成员变量)和行为(本类的成员函数) 两个部分。类是用户自定义的数据类型。格式

class 类名{
访问范围说明符;
成员变量;
访问范围说明符;
成员函数声明;
};

2、访问范围说明符

有三种: public (公有)、private (私有)、protected(保护)

3、类中的成员变量

类中的成员变量不能在声明时进行初始化。成员函数定义在类体内部,则默认为内联函数,也可以在类体内部声明函数,并加上inline,然后在类体外给出函数的定义,这样也是内联函数。

4、成员函数

成员函数在类体外定义:类体内必须有函数原型,类体外函数定义前必须用“类名::”作用域运算符。作用域的功能是标识成员是属于哪个类

5、类名的定义

类名的定义遵循一般的标识符命名规则,即字母,数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同,类定义以”;”结束,大括号中的部分称为类体。

6、例题

示例1:

//定义日期类
class myDate
{
	public:
		myDate() ;
		myDate(int, int, int);
		void setDate(int, int, int);
		void setDate(myDate);
		myDate getDate () ;
		void setYear(int);
		int getMonth();
		void printDate() eonst;
	private:
		iint year, month, day;
};

//在类体外定义成员丽数
myDate::myDate()
{
	year = 1970;
	month = 1;
	day = 1;
}

myDate::myDate(int y, int m, int d)
{
	year = y;
	month = m;
	day = d;
}

myDate::setDate(int y, int m,int d)
{
	year = y;
	month = m;
	day = d;
	return;
}

void myDate::setDate (myDate oneD)
{
	year = oneD.year ;
	month = oneD.month;
	day = oneD.day;
	return ;
}
myDate myDate::getDate()
{
	return *this;
}

void myDate::setYear(int y)
{
	year = y;
	return;
}

int myDate::getMonth ()
{
	return month ;
}

void myDate::printDate() const //常成员两数,不能修改属性值
{
	cout << year << "/" << month << "/"<< day;
return;
}

class Student
{
	public:
		void setstudent(string, myDate);
		void setName(string);
		string getName ();
		void setBirthday (myDate);
		myDate getBirthday();
		void printStudent () const;
	private:
		string name ;
		myDate birthday;
};

//在类体外定义成员函数
void Student::setstudent (string s, myDate d)
{
	name = s;
	birthday.setDate(d) ;
	return ;
	
void Student::setName (string n)
{
	name = n;
	return;
}

string Student::getName ()
{
	return name ;
}

void Student::setBirthday (myDate d)
{
	birthday.setDate(d) ;
	return;
}

myDate student::getBirthday()
{
	return birthday;
}

void Student ::printStudent () const
{
	cout <<"姓名:"<< name << "\t 生日:";
	birthday.printDate();
	cout << end1;
}

int main()
{
myDate D; //使用类来定义一个对象D
Student S;
S.setstudent("zhangsan",D); //.表示成员访问运算符
S.printstudent ();
return 0 ;

运行结果:

姓名:zhangsan 	生日:1970/1/1

示例2:定义学生类Student

//学生类的定义
class Student {
	private:
		//姓名
		string name;
		//年龄
		int age;
	public:
		void setStudent(string,int);//函数声明: 设置学生信息
		string getName 0;//获取学生姓名
		int getAge0;//获以学生年龄
		void printStudent 0 const; //打印信息
}

//在类体外定义成员函数
void Student::setStudent (string s, int a) 
{
	name = s; 
	age = a; 
}

string Student::getName()
{ 
	return name; 
}

int Student::getAge() 
{
	return age;
}

void Student::printStudent()
{
 	const[cout<<"姓名: "<<name<<" \t年龄:"<<age<<endl;
}

示例3:【程序分析题】以下程序有一处错误,请指出并改正


#include<iostream>
using namespace std;
class Student 
{
	int Num=0,Score=0;
	public:
		Student(int a, int b) {Num=a;Sorce=b;}
		void get() {cout<<Num<<":" <<Score<<endl;}
		
};

void main() 
{
	Student student (1, 96) ;
	student. get();
}

【正确答案】:【int Num=0,Score=0;】改为【 int Num,Score;】
【答案解析】:声明时,不能初始化

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

润小仙女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值