类:
可以看成是一种数据类型,类似与普通的数据类型,但是又别于普通的数据类型,是一个包含成员变量和成员函数的集合
成员变量:
和普通变量一样,又数据类型和名称,但是在定义类的时候不能对成员变量符指,因为类只是一种数据类型,本身不占用内存空间,而变量的值则需要内存来存储
成员函数:
也和普通函数一样,都又返回值和参数列表,与一般函数的区别是,成员函数是一个类的成员,出现在类体种,它的左右范围由类来决定;而普通函数是独立的,左右范围是全局的,或位于某个命名空间内
Class Student{
public:
//成员变量
char *name;
int age;
float score;
//成员函数
void say(){
cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
}
}
可以只在类体种声明函数,而将函数定义放在类体外面
Class Student{
public:
//成员变量
char *name;
int age;
float score;
//成员函数
void say();
}
void Student::say(){
cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
}
::被称为域解析符(作用域运算符):
用来连接类名和函数名,指明当前函数属于哪个类
成员函数必须先在类体中作原型声明,然后在类外定义
在类体中和类体外定义成员函数的区别:
区别:在类体中定义的成员函数会自动成为内联函数,在类体外定义的不会。
一般建议在类体内部对成员函数作声明,在类体外部进行定义,在类体外部定义时加上inline 就会变成内联函数,但是建议把内敛函数定义在类体内部
public、private、protected关键字:
public、private、protected用来修饰类的成员,不能修饰类
在类的内部,无论被声明为什么,都是可以互相访问的,没有访问限制;
在类的外部,只能通过对象访问成员,并且通过对象只能访问public属性的成员
1 通常我们将类的声明放在头文件中,而将成员函数的定义放在源文件中
2. 成员变量大都以m_开头,
简单地谈类的封装:
private关键字的作用在于更好地隐藏类的内部实现,不希望外部知道、或者只在类内部使用的、或者对外部没有影响的成员,都建议声明为private
实际开发中的成员变量已经只在类内部使用的成员函数都建议声明为private,而之将允许通过对象调用的成员函数声明为public
protrcted声明的成员在类外不能通过对象访问,但是在它的派生类内部可以访问。
给成员函数符指赋值的函数通常称为set函数 ,函数名字通常以set开头,后跟成员变量的名字
读取成员变量值的函数通常称为get函数,函数名字通常以get开头,后跟成员变量的名字
这种将成员变量声明为private,将部分成员函数声明为public做法体现了类的封装性,
所谓封装,就是尽量隐藏类的实现,只向用户提供有用的成员函数
先写private,在写public部分,不写默认为private