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;
}