码迷,mamicode.com
首页 > 编程语言 > 详细

c++关于类的基础学习

时间:2016-01-12 13:18:51      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

类 :在c++中大体分为两种,一 内置类型,如int double用户等  二 用户自定义类UDT

       问:为什么要使用用户自定义类?

       答:编译器不可能知道我们想使用的全部类型。但是标准库类型已经给我们提供了一些非常有用的类,比如vector,string,ostream等等,但是远不能满足需求。尤其是在面向对象的程序设计中,我们需要用自定义的一个类型独立的去表示这个对象的一些特性,所以在面向对象的程序中我们看到更多的是一个一个的对象,而在c程序中我们看到更多的是函数和表达式。类又是描述一个对象的关键和基础。

  1.      类的表达形式:

       class X{

   public:

      int m;

      int mf(int v){int odd = m;m = v;return odd}

};

用来定义类的组成部分,它们叫成员。读取成员规则如下:

X var;

var.m = 7;

var.mf(9);

 

2.接口和实现

class X{

public:

       //这个是接口的标识,它是公共的

private:

      //这个是实现标识,它是私有的

}

成员默认是私有的,即如果不加标识,就等同于私有

http://soft.chinabyte.com/database/340/12457340.shtml   经典 什么是不变式

c++提供了一种可用来描述没有私有实现的细节的类,就是 结构体

struct X{

int m;

} ; 等价于

class X{

  public:

           int m;

};

2.成员函数和构造函数

struct Date{                              struct Date{

            int y;                                                                                       int y,m,d;

     int m;                                                                                       Date(int y,int m,int d);//与类同名的成员是特殊成员,叫构造函数,

                                            专门用于初始化。类型本身具有一个需要参数的构造函数,如果程序员忘了利用,系                                                                                                                统会报错!!!

         int d;                                                                                        void add_day(int n);

} ;                                                                                                             };

                                      例如:

                                      Date mybirthday;//error:mybirthday not initial

Date today;                                                                                                Date today(12,24,2007);//error 日期不合法

today.y = 2005;                                                                                         Date last(2000,12,31);//right

today.m = 24;//error 非法月份                                                                   Date christams = Date(1976,12,24);//ok 麻烦

today.d = -3;//非法日期  我们需要辅助函数来进行初始化检查,数据合法性检查

2.保持细节私有性

上述结构体方式,用户可以任意修改结构体中的数据,比如 Date last(2000,12,31); 

                           last.m = 14;//非法,不合理的月份

为了避免这种大的错误,我们让数据私有,不能让用户随意修改,但是会提供一个公有函数仅供用户访问。

class Date{

         private:

         int y,m,d;

         public:

         Date(int y,int m, int d);

         void add_day(int n);

         int year(){return y};

         int month(){return m};

         int day(){return d};

};

Date last(2000,12,31); 

 

count<< last.month();<<endl;//ok

判定有效值得规则称为不变式

如果我们不需要对处理的数据,规定不变式,那我们处理的就是普通数据,那就用struct,不用使用类了

struct不能对自身结构中的数据进行保护,所有的数据都是public的,可以随意修改

 

 

c++关于类的基础学习

标签:

原文地址:http://www.cnblogs.com/xyy-comeon/p/5123866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!