C++中类的定义和类的构造函数

时间:2019-09-15
本文章向大家介绍C++中类的定义和类的构造函数,主要包括C++中类的定义和类的构造函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

类的定义

class 类名{ 访问范围说明符: 成员变量1 成员变量2 成员函数声明1 成员函数声明2 访问范围说明符: 更多成员变量 更多成员函数声明 ... };
类的定义要以
;
结束。
“访问范围说明符”一共有三种,分别是 public、private 和 protected。三者的区别后面会详细介绍,目前暂且都用 public。“访问范围说明符”可以出现任意多次。
“成员变量”的写法与普通的变量定义相同。称其为成员变量,是因为这些变量是一个类的成员。
同样地,“成员函数声明”的写法也与普通的函数声明相同。
一个类的成员函数之间可以互相调用。类的成员函数可以重载,也可以设定参数的默认值。
以前所学的函数不是任何类的成员函数,可称为“全局函数”。
成员变量就代表对象的“属性”,成员函数就代表对象的“方法”。成员变量和成员函数出现的先后次序没有规定。
成员函数的实现可以位于类的定义之外,格式如下:
返回值类型 类名:函数名() { 函数体 }
定义类之后,就可以定义对象了。定义对象的基本方法如下:
类名 对象名;
此处,“对象名”的命名规则和普通变量相同。对象也可以看作“类变量”。

       public:
        int w, h; //成员变量,宽和高
        void init( int w_,int h_ ); //成员函数,设置宽和高
        int area(); //成员函数, 求面积
        int perimeter(); //成员函数,求周长
     }; //必须有分号
      void CRectangle::init( int w_,int h_ )
     {
         w = w_;  h = h_;
      }
      int CRectangle::area()
     {
        return w * h;
      }
     int CRectangle::perimeter()
      {
        return 2 * ( w + h);

类的构造函数

1.构造函数是特殊的成员函数,与其他成员函数不同的是,构造函数和类同名,而且没有返回类型。与其他成员函数相同的是,构造函数也有形参表(可能为空)和函数体。

        一个类可以有多个构造函数,每个构造函数必须有与其他构造函数不同数据或类型的形参。对于没有形参的构造函数我们称为默认构造函数,那么定义对象时,如果没有指明实参,就会调用默认的构造函数。

        值得注意的是,如果我们没有显式地定义默认构造函数,编译器会自动为这个类生成默认构造函数,这个自动生成的默认构造函数,就会按照一定的初始化规则来初始化类中的成员。

       构造函数与其他函数一样,具有名字、形参表和函数体,但是构造函数可以包含一个构造函数初始化列表。构造函数初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。

2.构造函数是一类特殊的函数,与其他的成员函数不同的是构造函数构造函数不需要用户来调用它,而是建立对象的时候自动的执行

代码示例

             #include <iostream>
            //#include "student.h"
          //#include <string>
          //#include <cstring>
           using namespace std;
           class Time
           { public:
              Time()    //构造函数必须与类的名称相同
              {                              //利用构造函数对对象中的数据成员进行初始化
            hour=0;
            minute=0;
              sec=0;

             }
           void set_time();
          void show_time();
           private:
         int hour;
        int minute;
         int sec;

     };

原文地址:https://www.cnblogs.com/yygxy/p/11522351.html