类与对象2
程序员文章站
2022-04-05 16:20:53
...
上一篇我们大体了解了什么是类、类与对象的关系,那么如何定义一个类呢?
类的声明形式
class 类名{
public:
公有成员(外部接口)
private:
私有成员
protect:
保护成员
};
像public这种叫做访问属性;
定义时;类的属性、数据一般定义为private
********;对类的操作(函数)一般定义为public
且最后以分号==;==结束。
访问属性的特点
private:只能由
1.该类中的函数、
2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问
protected:可以被
1.该类中的函数、
2.派生类的函数、以及
3.其友元函数访问。 但不能被该类的对象访问。
public:可以被
1.该类中的函数、
2.派生类的函数、
3.其友元函数访问,也可以由
4.该类的对象访问。
类的声明时不能对类的成员初始化,如以下就是错误的演示
成员函数
定义可分为两种;一种是完全在类中定义,
*****************;一种是函数中说明原型,在类外给给出函数体
并在函数名钱使用类名加以限定
在类外定义函数体形式为;
返回类型 类名::成员函数名(参数表)
{
//函数体
}
比如下面一个例子;
class Clock
{
public:
void SetTime(int NewH,int NewM,int NemS);
void ShowTime(); //类内声明原型
private:
int Hour,Minute,Second;
};
void Clock::SetTime(int NewH,int NewM,int NemS); //类外给出函数体
{ Hour=NewH;
Minute= NewM;
Second=NemS;
}
void Clock::ShowTime()
{cout<<Hour<<":"<<Minute<<":"<<Second;
}
从上面可以看出当类内函数参数是类内数据时可以省略参数,比如ShowTime()函数
对象
类可以说描述了一类问题的共同属性和行为;
类的对象时改类的实例或实体,即类的变量。
对象的声明形式:
类名 对象名;
例r如用上面定义的类,声明对象
Clock myClock;
类中成员的访问
在类外只能访问public中的成员;
访问方式;1
对象名.成员名
2。定义类指针访问;如有一个student类;
student stud1,*p; //定义类指针
p=&stud1;
p_>成员,(*p).成员 //指针访问形式
3.通过对象的引用访问对象中成员
stdent stud1;
student &stud2=stud1;
cout<<stud2.成员
程序一;输入时分秒
#include <iostream>
using namespace std;
class Time
{public:
int hour;
int minute;
int sec; //类中仅有数据无函数
};
int main()
{Time t1;
cin>>t1.hour;
cin>>t1.minute;
cin>>t1.sec;
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
}
用函数输入输出时分秒
。。。。。。 //借用上面的类定义
int main()
{void set_time(Time&); //原型声明
void show_time(Time&);
Time t1;
set_time(t1);
show_time(t1);
}
void set_time(Time& t) //定义函数
{cin>>t.hour;
cin>>t.minute;
cin>>t.sec; }
void show_time(Time& t)
{cout<<t.hour<<″:″ <<t.minute<<″:″ <<t.sec<<endl; }
要想用函数改变参数(变量)的值,两种方法;
1.指针
2.引用(上面就是用这种方法)
用类成员函数输入输出
因为成员函数用的是成员数据故变量参数可以省略
#include<iostream>
using namespace std;
class Time
{ public:
void set_time( );
void show_time( ); //函数原型声明
private:
int hour; i
nt minute;
int sec;};
void Time∷set_time( ) //类外给出函数体
{cin>>hour;
cin>>minute;
cin>>sec;}
void Time::show_time()
{cout<<hour<<″:″ <<minute<<″:″ <<sec<<endl;}
int main() //主函数
{ Time t1;
t1.set_time( ); //调用t1的函数成员设置时间
t1.show_time( ); //调用t1函数 输出时间
return 0;
}
类外输入传值给成员数据并输出
#include<iostream>
using namespace std;
class Clock
{public:
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
private:
int Hour, Minute, Second; }; //定义类
void Clock::SetTime(int NewH, int NewM,int NewS) //类外函数
{ Hour=NewH;
Minute=NewM;
Second=NewS;}
void Clock::ShowTime()
{ cout<<Hour<<":"<<Minute<<":"<<Second;}
int main()
{ Clock myClock,yourClock;
int h,m,s;
myClock.SetTime(8,30,30); //调用myClock中的函数SetTime( ...)
myClock.ShowTime();
cin>>h>>m>>s;
yourClock.SetTime(h,m,s);
yourClock.ShowTime();
}
输出结果;