一.class与struct区别:
1.struct的成员默认权限是public,而class的成员默认权限是private。2.struct的默认继承方式为public,而class的默认继承为private
二.类定义
class Date
{
int year,month,day;
public:
void Set(int y,int m,int d);
bool IsLeapYear();
void Print();
};
void Date::Set(int y,int m,int d)
{
year = y;
month = m;
day = d;
}
bool Date::IsLeapYear()
{
return(year%4 == 0 && year%100 !=0) || (year%400 == 0);
}
void Date::Print()
{
cout<<year<<month<<day;
}
int main()
{
Date d;
d.Set(2000,12,6);
if(d.IsLeapYear())
d.Print();
}
1.成员函数
成员函数定义可以放在类定义中,这时函数名前可以不冠有类名了。只要是在类定义中包含的成员函数,就有默认声明内联的性质。也就是说,该成员函数处于被编译自动安排到最佳运行性能的状态。另一方面,把成员函数写入类定义中,就使得类定义体中的大小不可预见。因此,类定义体作为应用程序员参考的意义会因为参考文档不必要的庞大而受到伤害,而作为类的实现者也一定程度地失去了工作意义,似乎类定义工作,已经包含类的实现了。而且,编译是否真的将成员函数安排为内联,还要看函数是否足够简单,是否包含不适于内联运行的循环结构。所以,就尽量将成员函数的定义写到类定义的外部去。而内联函数另外的体现就是在类内声明,在定义的时候在函数前加入inline关键字。
2.使用对象指针
调用成员函数3种形式
(1)objectName.memberFunctionName(Parameters)
(2)ObjectPoniter->memberFunctionName(Parameters)
(3)(*ObjectPoniter).memberFunctionName(Parameters) //点操作符的优先级大于*号
3.常成员函数
如果只对对象进行读操作,则该成员函数可以设计成常成员函数。好处就是让使用者一目了然地知道该成员函数不会改变对象值。同时让类的实现者更方便的调试,因为在常成员函数中,任何改变对象值的操作,都将被编译器认定为错误。更方便软件设计遇控制软件质量,尽量不让类产品有意外的失措。所以,能够成为常成员函数的,应尽量写成常成员函数形式。
4.重载成员函数
成员函数跟普通函数一样,也可以重载。对重载的识别和使用规则也是相同的。
三.操作符
1.函数重载特征
C++其实把操作符也看成是与函数同样性质的实体了。因此,可以对操作符进行函数那样的定义,之后,就可以自由地使用该操作符了。
//01.cpp
01.#include<iostream>
02.using namespace std;
03.class Point
04.{
05. int x,y;
06. public:
07. void set(int a,int b){x = a;y = b;}
08. void print() const{cout<<"("<<x<<","<<y<<")\n";}
09. friend Point operator+(const Point& a,const Point& b);
10. friend Point add(const Point& a,const Point& b);
11.};
12.Point operator+(const Point& a,const Point& b)
13.{
14. Point s;
15. s.set(a.x+b.x,a.y+b.y);
16. return s;
17.}
18.Point add(const Point& a,const Point& b)
19.{
20. Point s;
21. s.set(a.x+b.x,a.y+b.y);
22. return s;
23.}
24.int main()
25.{
26. Point a,b;
27. a.set(3,2);
28. b.set(1,5);
29. (a+b).print();
30. operator+(a,b).print();
31. add(a,b).print();
32}
原文:http://www.cnblogs.com/fenghuan/p/4794691.html