c++ 类的初始化(自用)

Time.hpp

//
//  Time.hpp
//  stud
//
//  Created by pt on 2024/4/8.
//

#ifndef Time_hpp
#define Time_hpp
//类声明
#include <iostream>
using namespace std;
class Time
{
public:
    int Hour;
    int Minute;
    int Second;
    Time(int tmphour, int tmpmin, int tmpsec);//构造函数
};

#endif /* Time_hpp */

Time.cpp

//
//  Time.cpp
//  stud
//
//  Created by pt on 2024/4/8.
//

#include "Time.hpp"
Time::Time(int tmphour, int tmpmin, int tmpsec)//构造函数的实现
{
    Hour = tmphour;
    Minute = tmpmin;
    Second = tmpsec;

}


main.cpp

#include <iostream>
#include "Time.hpp"

int main()
{
    //Time myTime;//此条语句失效,没有对应的构造器为其初始化
    Time myTime(11, 14, 5);//初始化
    
    
    
    Time(12,13,52);
    //创建了一个临时的 Time对象,但这个对象并不会绑定到任何变量上,因此它在表达式结束后立即被销毁。这种语句通常用于临时对象的创建,例如在函数调用中传递匿名对象。
    //如果你想在 main 函数中创建一个 Time 对象并保持它存在,你需要给这个对象命名,例如:Time myTime(12,13, 15);

    Time myTime1(12, 13, 52);//直接初始化
    Time myTime2{12, 13, 52};//列表初始化 不允许缩窄变换(形如double->int丢失精度变换),允许对于聚合类型(如数组、结构体等)提供初始化
    
    Time myTime3 = Time(12, 13, 52);//在C++98旧标准下可能会创建一个临时对象然后复制给 myTime,但在C++11新标准下,拷贝/移动构造通常会被优化掉,直接在 myTime 的存储位置构造对象。
    Time myTime4 = Time{12, 13, 52};//同上
    Time myTime5 = {12, 13, 52};//用到隐式类型转化,把花括号中的参数进行隐式类型转换,以创建一个 Time 对象,并将其赋值给 myTime5
    
    //对象的复制 不调用构造函数
    Time myTime6  = myTime;
    Time myTime7(myTime);
    Time myTime8{myTime};
    Time myTime9 = {myTime};


    
    //每个对象都有不同的内存地址
    std::cout << &myTime << '\n' << &myTime1 << '\n' << &myTime2 << '\n' << &myTime3 << '\n' << &myTime4 << '\n' << &myTime5 << '\n' << &myTime6 << '\n' << &myTime7 << '\n' << &myTime8 << '\n' << &myTime9 << '\n' << std::endl;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值