这里是Joe本人的学习笔记,如果能帮助到你,那我受宠若惊!
不知不觉学习c++类已经一周多了,这里给出我的总结,作为以后的复习资料。
类的基本知识
类的成员函数:
返回值类型 类名 :: 函数成员名(参数表)
{
函数体
}
void Clock::set(int a,int b,int c){
函数体
}
构造函数:
没有返回值,函数名与类名相同,
Clock::Clock(int a,int b,int c){//构造函数的实现
函数体
}
复制构造函数:
声明:
class 类名
{
public:
- 类名(形参表){ }
- 类名(类名 &对象名);
};
实现:
类名::类名(类名 & 对象名){
函数体
}
class Point{
public:
Point(int xx=0,int yy=0)//构造函数
{
x=xx;
y=yy;
}
Point(Point &p);//复制构造函数
}
类的组合:
组合类的构造函数:
类名::类名(参数表):内嵌对象1(参数表),内嵌对象2(参数表),...
{
类的初始化
}
组合类的复制构造函数:
C::C(C &c1) : b(c1.b),...{
...
}
#include<iostream>
#include<cmath>
using namespace std;
class Point {
public:
Point(int xx=0,int yy=0){
x=xx;
y=yy;
}
Point (Point &p);
int getx(){
return x;
}
int gety(){
return y;
}
private:
int x,y;
};
Point::Point(Point &p){
x=p.x;
y=p.y;
}
class line{
public:
line(Point xp1,Point xp2);
line(line &l);
double getlen(){return len;}
private:
Point p1,p2;
double len;
};
line::line(Point xp1,Point xp2) :p1(xp1),p2(xp2){//组合类的构造函数
double x=static_cast<double> (p1.getx()-p2.getx());
double y=static_cast<double> (p1.gety()-p2.gety());
len=sqrt(x*x+y*y);
}
line::line(line &l):p1(l.p1),p2(l.p2){//组合类的复制构造函数
len=l.len;
}
int main(){
Point myp1(1,1),myp2(4,5);
line l1(myp1,myp2);
line l2(l1);
cout<<l1.getlen()<<endl;
cout<<l2.getlen()<<endl;
}