很久没有学习C++了,最近工作转向Android了,本人的志向则是从linux drivers一直研究到HAL和JNI Framwork JAVA
慢慢的学习路程,从C++开始吧。
C++的class的声明定义
class内有public:外部函数可以访问。可以被外部函数访问。
private;只能通过内部函数访问,只能被本类的其他函数访问,或者友元类访问。
protected :访问权限受保护。
一般数据放在private,用于保证对象的封闭稳定,函数则为外界提供调用接口。
如下:
class CFindRoot{--定义一个CFindRoot的类。
public:
void SetData(float x,float y,float z);
void Find(void);
void Display(void);
private:
float a,b,c,delta;
double x1,x2;
};结束标志。
成员函数的定义:
函数的访问权限:private或public
在类内定义成员函数,其默认为inline函数,直接编译到调用点,减少调用时间。
也可以在类内声明,类外定义。
#include
#include
#include "FindRoot.h"
using namespace std;
void CFindRoot::SetData(float x,float y,float z)
{
a=x;b=y;c=z;
delta=b*b-4*a*c;
}
void CFindRoot::Find(void)
{
if(delta>0)
{
x1=(-b+sqrt(delta)/2*a);
x2=(-b-sqrt(delta)/2*a);
return ;
}
else if(delta==0)
{
x1=x2=(-b)/(2*a);
return ;
}
else
{
x1=(-b)/(2*a);
x2=(-b-sqrt(delta)/2*a);
return ;
}
}
void CFindRoot::Display(void)
{
if(delta>0)
{
cout<<"x1="<
return ;
}
else if(delta==0)
{
cout<<"x1=x2="<
return ;
}
else
{
cout<<"x1="<
}
}
int main(void)
{
CFindRoot obj1,obj2,*obj3;
CFindRoot &obj4=obj2;
obj3=&obj2;
obj1.SetData(1,2,3);obj1.Find();obj1.Display();
obj3->SetData(3,4,5);obj3->Find();obj3->Display();
obj4.SetData(7,8,9);obj2.Find();obj2.Display();
return 0;
}
class 的对象变量,可以是CFindRoot obj1 直接调用。
定义对象指针,指向调用。
定义引用对象。引用对象跟被引用对象是一个对象。
在main函数中只能使用public成员,private protected则不允许使用。
对象直接的内存分配则是:
数据成员为单独分配,公有成员函数则共同分配,依靠this指针来调用。this指针指向对象。
类对象在调用成员函数时,成员函数除了接受参数外,还要接受对象的地址,这个地址被this指针获取,相当于&this=&r1,
void CRect:: set(int x,int y,int z)
{
top=x; -> this->top=t;
}
阅读(3638) | 评论(0) | 转发(0) |