一、类
1.类的定义:
对具有相同属性和行为的一类客观事物的描述。是用户自定义的数据类型。
类包括行为(成员函数)和属性(数据成员)。
2.类的定义格式:
class 类名{
public://公有
protected://保护
private://私有
};//注意:此处分号不可以省略!!!!类定义以分号结束!
//举例:
class Student//类名见名知意,首字母大写
{
public:
void display();//成员函数一般为公有
private:
string name;
string id;
char sex;
int age;
double score;//数据成员一般为私有,类内使用,安全
};//注意分号结束
成员函数公有化;数据成员私有化
类以分号结束
注意:
(1)类的数据成员可以是其他类的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员。
(2)类与结构体的区别:
没有明确指定类成员的访问权限时,C++结构体的成员都是公有的,而类的成员是私有的。
3.访问权限(控制)
public:公有成员,类的外部接口
protected:保护成员,仅允许本类成员函数及派生成员函数访问
private:私有成员,仅允许本类成员函数访问
4.成员函数
通过操纵数据成员,实现功能。成员函数可操作数据:1)类的数据成员。2)函数内定义的局部变量(包括形参)。3)成员函数(不建议使用,安全性不好)。
成员函数的定义:
返回值类型 类名::成员函数名(参数表)//表示该成员属于此类
{
函数体
}
举例:
class Point
{
public:
float getPointx();
float getPointy();//取得数据成员的值,数据成员本身不开放,通过公有get函数取得。另外,set函数设置数据成员值。
void initPoint(float PointA_x, float PointA_y); //初始
void move(float New_x, float New_y);
private:
float P1_x,P1_y;
};
void Point::InitPoint(float PointA_x, float PointA_y)
{
P1_x=PointA_x;
P1_y=PointA_y;
}
void Point::Move(float New_x, float New_y)
{//New表示偏移量
P1_x+=New_x;
P1_y+=New_y;
}
float Point::GetPointx()
{
return P1_x;
}//取出数据成员的横坐标
float Point::GetPointy()
{
return P1_y;
}
4.对象
对象是类的实例或者实体。
[对象(具体化),类(抽象)]
对象的定义格式:
类名 对象名1,对象名2,…,对象名n;
(先定义类,再定义对象。)
5.类成员的访问
对象成员的访问:
(1)对象名 . 公有成员
(2)指针访问形式:对象指针变量名->公有成员
举例:
#include<iostream.h>
class ptr_access {
public:
void setvalue(float a, float b) { x=a; y=b; }
float Getx() {return x;}
float Gety() {return y;}
void print()
{
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
private: //私有数据成员
float x,y;
};
int main()
{
float a1,a2;
ptr_access *ptr=new ptr_access;//
ptr->setvalue(2,8); //通过指针访问公有成员函数
ptr->print();
a1=(*ptr).Getx();
//两种方式,(对象名.公有函数)与(对象指针变量名->公有成员),通过公有成员函数访问私有数据成员
a2=(*ptr).Gety();
cout<<"a1="<<a1<<endl;
cout<<"a2="<<a2<<endl;
return 0;
}
例题:输入矩形的长和宽,输出面积和周长。
class CRectangle
{
public:
int w,h;
int Area() {
return w * h;
}
int Perimeter() {
return 2 * ( w + h);
}
void Init( int w_,int h_ ) {
w = w_; h = h_;//初始化
}
};
int main( )
{
int w,h;
CRectangle r; //r对象
cin >> w >> h;
r.Init( w,h);//成员函数操作需要从外部引用数据,则需要加形参;只对数据成员操作不加形参。
cout << r.Area() << endl << r. Perimeter();//调用
return 0;
}
成员函数操作需要从外部引用数据,则需要加形参;只对数据成员操作不加形参。
引入类就是引入数据类型,通过对象调用数据成员使用。
注意:
(1)在类的定义中不能对数据成员进行初始化。
(2)类的任何成员都必须指定访问属性,数据成员(private/protected),将成员函数(public)。
(3)类的成员可以是其他类的对象,称为类的组合。但不能以类自身的对象作为本类的成员。
内联函数:
作用: 减少频繁调用小子程序的运行的时间开销.
内联函数声明:
inline 函数原型
不能含有复杂结构控制语句 ,不能递归调用.
内联函数仅在函数原型作一次声明。
适用于只有1 ~ 5行的小函数.
标签:函数,对象,成员,float,公有,void 来源: https://blog.csdn.net/csdn_lfy/article/details/104803364
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。