怎样使用类和对象 --c++对c的扩充(6)

初始化

1)对象的初始化
针对Public成员:

# include <iostream>
# include <algorithm>
using namespace std;
//方式一
class Time {
public://不写public则默认为private,那么主函数将无法调用这些属性
	int hour;
	double minute;
	int sec;
};
//方式二
//c++在不断更新的过程中,在类中初始化是正确的,
//虽然说在创建类的时候依旧是没有储存空间的,但是这个初始化的值,
//是当对象创建后(此时已经有储存空间),将这个初始值赋给相应的变量。
class AM {
	int hour = 1;
	double max_ = 2;
	int min_ = 8;
public:
	void set_();
	void show_() {
		cout << hour << endl;
		cout << max_ << endl;
		cout << min_ << endl;
	}
};
void AM::set_() {
	cin >> hour >> max_ >> min_;
}
int main() {
	//初始化
	Time t = { 12,13,14 };
	cout << t.hour << endl;
	cout << t.minute << endl;
	AM am;
	am.set_();
	am.show_();
	AM am1;
	am1.show_();
}

运行结果:
在这里插入图片描述
第一条红线往上是输出t的hour和minute
第二条红线往上是输入am的三个值,
第三条红线往上是输出am的三个值
最后三个数字是am1最开始被初始化(在类中赋值)的值,

2)使用构造函数初始化数据成员
构造函数的特点:
① 名字与类名相同
②无需用户调用,在建立对象时自动执行
③不返回任何值,不具有任何类型
④ 当没有定义构造函数时,系统会自动生成函数体为空,没有参数,不执行初始化的构造函数,

3)构造函数的类内定义以及类外定义
类内定义:

# include <iostream>
# include <algorithm>
using namespace std;
class Time{
public://这里绝不可以省去,否则定义对象的时候会报错,因为此时的构造函数是私有的
	Time() {
		hour = 2;
		minute = 9;
		sec = 33;
	}
	void show_time();
//不写public则默认为private,那么主函数将无法调用这些属性
private://这里也不可以省去
	 int hour;
	 double minute;
	 int sec;
};
void Time::show_time() {
	cout << hour << endl;
	cout << minute << endl;
	cout << sec << endl;
}
//
int main() {
	Time t;
	t.show_time();
	return 0;
}

运行结果:
在这里插入图片描述
类外定义:

# include <iostream>
# include <algorithm>
using namespace std;
//方式一
class Time{
public:
	Time();//重点
	void show_time();
private:
	 int hour;
	 double minute;
	 int sec;
};
Time::Time() {//类型为Time
	hour = 2;
	minute = 9;
	sec = 33;
}
void Time::show_time() {
	cout << hour << endl;
	cout << minute << endl;
	cout << sec << endl;
}
//
int main() {
	Time t;
	t.show_time();
	return 0;
}

运行结果不变。

特点:
①构造函数时在定义对象是由系统自动执行,且只可执行一次,且通常声明为public。
② 可用类对象初始化另一个类对象,

Time t;
Time t1 = t;

在这里插入图片描述
此时是把对象的所有数据成员的值拷贝到t2相应各成员,但不调用t1.time();调用的是默认系统生成的复制构造函数,后面会系统说
③一般构造函数中不包含另外其他语句,以保证程序的清晰,但,写了也不会出现语法错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值