C++中类的定义
类是有不同数据类型的数据与这些数据相关的操作封装在一起的集合。
类与结构体有些类似,但是结构体中并没有与数据相关的操作
#include <iostream>
using namespace std;
class Clock//时钟类的声明
{
public://外部接口,共有成员函数
void setTime(int newH, int newM, int newS);
void showTime(){
cout << hour << ":" << minute << ":" << second << endl;
}
private://私有数据成员
int hour, minute, second;
};
//时钟类成员函数的具体实现
//成员函数:在类中说明原型,可以在类外给出函数体实现,也可以在类的内部直接编写函数体
void Clock::setTime(int newH, int newM, int newS)
{
hour = newH;
minute = newM;
second = newS;
}
int main()
{
Clock myclock;
Clock* tClock;//创建类对象指针,对象指针是一个对象在内存中的首地址
tClock = &myclock;
myclock.setTime(14, 57, 30);
myclock.showTime();
tClock->showTime();//用对象的指针引用对象成员或数组元素使用操作符“->”
system("pause");
return 0;
}
私有成员:
私有成员用private声明(若私有成员紧接着类名称,则可省略关键字),私有类型的成员只允许本类的成员函数来访问,而类外部的任何访问都是非法的
#include <iostream>
using namespace std;
class Test {
private://私有成员函数类外不能够直接访问
int number;
public:
int returnNum()
{
return number;
}
void setNum(int a) {
number = a;
}
};
int main()
{
Test test;
//test.number = 20; //错误,私有成员不能外部访问
test.setNum(5201314);
cout<<test.returnNum()<<endl;
system("pause");
return 0;
}
静态数据成员:
静态数据成员的目的是实现数据之间共享的问题。使用全局变量也可以实现数据共享,但是全局变量有其局限性。(1。不能保证值的正确性;因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误非常难以发现。
2。如果在多线程中使用全局变量,你的程序将会错的一塌糊涂。多线程会修改另一个线程使用的全局变量的值,如果不注意,一旦出错后果不堪设想。)
静态数据成员对同一个类的多个对象是所共有的,存储在固定的内存空间,功所有该类的对象共同使用,每个类的对象都可以更新静态成员的值,只要有一个对象对该静态成员函数进行更新了,那么其他的对象访问该静态数据时,访问的就是该类最新更新的值。
#include <iostream>
using namespace std;
class Myclass
{
public:
int myclass(int c, int m, int e);
void getNum() {
cout << "班级总分为:" << sum << endl;
}
private:
int C, M, E;
static int sum;//静态数据成员
};
//静态数据成员
int Myclass::sum = 0;
int Myclass::myclass(int c, int m, int e)
{
C = c;
M = m;
E = e;
sum += C + M + E;
return sum;
}
int main()
{
Myclass wang,han,zang;
wang.myclass(10, 0, 0);
han.myclass(20, 0, 0);
zang.myclass(30, 0, 0);
wang.getNum();
han.getNum();
zang.getNum();
system("pause");
return 0;
}
转载自:黑凤梨の博客