C++构造函数初始化类对象

简介: C++构造函数初始化类对象

一.构造函数

【1】构造函数不需要在定义时声明类型

【2】构造函数不需要用户进行调用

【3】可以在类内,也可以在类外构造函数;在类外构造函数时,需要在类内进行声明。

【4】构造函数的名字必须与类名相同

【5】构造函数通常用于对类内的数据进行初始化

二.构造函数的分类

  1. 无参的构造函数
  2. 有参的构造函数
  3. 参数初始化表的构造函数【重点】

三.构造函数的写法

  1. 无参的构造函数

eg1.从键盘输入时分秒,并输出时间。

思路:

  • 写一个Time 类,公共数据由hourminutesecset_time函数和show_time函数组成,私有数据由,hourminutesec组成。
  • 写出两个函数set_timeshow_time函数还有主函数。
  • 在主函数建立对象进行调用。
#include<iostream>
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;
};
void Time::set_time()
{
   cin>>hour;
   cin>>minute;
   cin>>sec;
}
void Time::show_time()
{
   cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
    Time t1;
    t1.set_time();
    t1.show_time();
    Time t2;
  t2.set_time();
    t2.show_time();
return 0;
}

以上代码是在类内构造函数,我们还可以在类外构造函数,但这也需要你在类内进行声明函数

类外的函数写法:

Time::Time()
{
  hour=0;
  minute=0;
  sec=0;
}

同时在类内的pubilc里加入:

Time();//函数声明

2.有参的构造函数

我们仍然用上面的例题作为分析:

对于有参数的构造函数我们需要做如下改动:

  • 声明构造函数的时候加入参数
Time(int,int,int);
  • 在类外定义带参数的构造函数
Time::Time(int h,int m,int s)
{
  hour=h;
  minute=m;
  sec=s;
}
#include<iostream>
using namespace std;
class Time
{
   public:
    Time(int,int,int);
      void show_time();
   private:
      int hour;
      int minute;
      int sec;
};
Time::Time(int h,int minute;int sec)
{
  hour=h;
  minute=m;
  sec=s;
}
void Time::show_time()
{
   cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
    Time t1(12,25,30);
    t1.show_time();
    Time t2(15,30,21);
    t2.show_time();
  return 0;
}
  • 在建立对象之后进行函数调用的时候,可以直接赋值参数
Time t1(12,25,30);
t1.set_time();
t1.show_time();

3.参数初始化表构造函数

我们依然用如上的例子进行解释。

首先在原有基础上的有参构造函数声明上

Time(int,int,int);

将其修改为:

Time(int h,int m,int s):hour(h),minute(m),sec(s){};

当然主函数的对应调用函数依然不变。

#include<iostream>
using namespace std;
class Time
{
    public:
        Time(int h,int m,int s):hour(h),minute(m),sec(s);
        void set_time();
        void show_time();
    private:
      int hour;
      int minute;
      int sec;
   };
void  Time::set_time()
   {
    cin>>hour>>minute>>sec;
   }
void Time::show_time()
   {
    cout<<hour<<":"<<minute<<":"<<sec<<endl;
   }
int main()
{
  Time t1(12,25,30);
  t1.set_time();
    t1.show_time();
   return 0;
}

4.默认参数的构造函数

#include<iostream>
using namespace std;
class Time
{
    public:
        Time(int h=12,int m=25,int s=30);
        void set_time();
        void show_time();
    private:
      int hour;
      int minute;
      int sec;
   };
 Time::Time()
   {
  hour=h;
  minute=m;
  sec=s;
  }
void  Time::set_time()
   {
    cin>>hour>>minute>>sec;
   }
void Time::show_time()
   {
    cout<<hour<<":"<<minute<<":"<<sec<<endl;
   }
int main()
{
  Time t1;
  t1.set_time();
    t1.show_time();
   return 0;
}


目录
相关文章
|
24天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
38 2
|
1月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
83 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
80 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
87 4
|
2月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
31 4
|
2月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
32 4
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
26 1
|
2月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
2月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
2月前
|
存储 编译器 C语言
【C++类和对象(上)】—— 我与C++的不解之缘(三)
【C++类和对象(上)】—— 我与C++的不解之缘(三)