好几个月没有写了,差了好多,这些天补回来吧。
接下来,让我们正式步入C++与C语言开始不同的地方。
我对类的理解:类是对于具有相同或相似属性的数据集合。
类的关键词:class,public,protected,private;
类的创建:
class+类的名字+{.........数据}+“ ; ”’结尾。
代码演示:创建一个简单的类:
class Date
{};
注意:
类的结尾带有一个“分号”的结束标志。
类内数据
接下来让我们完善这个类,也就是与我们的关键词:public,private有关了。
注:这里我们先不讲protected,其主要用于后面的类的继承,现阶段不能有很好的体现。
class Date
{
public:private:int year, month, day;
};
声明在private的数据为类的私有数据,无法在外部引用,声明在public的数据为类的共有数据,可以在外类部引用。
这里体现出了类的封装特性,对类内的数据具有一定的保护作用。
同时这里也体现出了class(类)与struct(结构体)的不同:
类内的部分数据无法在类的外部使用,而结构体内的所有数据都可以在结构体外使用。
实例:
class Date
{public:int setnumber(int year,int month,int day){_year=year;_month=month;_day=day;}private:int _year,_month,_day;};
int main(int argc, char** argv) {Date wang;wang.setnumber(2024,7,6);cout<<wang._year<<endl;return 0;
}
运行这段代码,我们会发现编译器报错为:
类内数据的使用:
那要如何使用类内数据呢,我们可以在类内定义public类型的函数来对类内的数据进行使用,
就像是我们在前面代码里面定义的setnumber函数一样。将公有函数作为类的接口来对类内数据进行赋值、修改、导出等操作。
这样的好处:可以不破坏类的封装性。
class Date
{public:int setnumber(int year,int month,int day)//对数据进行赋值操作 {_year=year;_month=month;_day=day;}void Print()//对数据进行打印操作 {cout<<_year<<' '<<_month<<' '<<_day<<endl;} private:int _year,_month,_day;};
int main(int argc, char** argv) {Date wang;wang.setnumber(2024,7,6);wang.Print();return 0;
}