C++ 类与对象之分类与调用

类的实现:

#include <iostream>
using namespace std;
class Clock {
public:
	void setTime(int newH = 0, int newM = 0, int newS = 0);
	void showTime();
private:
	int hour, minute, second;
};
//成员函数的实现
void Clock::setTime(int newH, int newM, int newS) {

	hour = newH;
	minute = newM;
	second = newS;

}
void Clock::showTime() {

	cout << hour << ":" << minute << ":" << second;
}
int main() {
	Clock myClock;
	myClock.setTime(8, 8, 45);
	myClock.showTime();
	return 0;
}


构造函数:

#include <iostream>
using namespace std;
class Clock {
public:
	//构造函数
	Clock(int newH , int newM, int newS);
	void setTime(int newH = 0, int newM = 0, int newS = 0);
	void showTime();
private:
	int hour, minute, second;
};
//构造函数的实现 实现的时候要写类名
Clock::Clock(int newH, int newM, int newS) :
	hour(newH), minute(newM), second(newS)   //初始化
     {}
//成员函数的实现
void Clock::setTime(int newH, int newM, int newS) {

	hour = newH;
	minute = newM;
	second = newS;

}
void Clock::showTime() {

	cout << hour << ":" << minute << ":" << second;
}
int main() {
	Clock v(0, 0, 0);   //自动调用构造函数
	v.showTime();
	return 0;
}

默认构造函数

#include <iostream>
using namespace std;
class Clock {
public:
	//构造函数
	Clock(int newH , int newM, int newS);
	//在类中定义默认构造函数
	Clock();
	void setTime(int newH = 0, int newM = 0, int newS = 0);
	void showTime();
private:
	int hour, minute, second;
};
//默认构造函数的实现
Clock::Clock():hour(0),minute(0),second(0) {}
//构造函数的实现 实现的时候要写类名
Clock::Clock(int newH, int newM, int newS) :
	hour(newH), minute(newM), second(newS)   //初始化
     {}
//成员函数的实现
void Clock::setTime(int newH, int newM, int newS) {

	hour = newH;
	minute = newM;
	second = newS;

}
void Clock::showTime() {

	cout << hour << ":" << minute << ":" << second;
}
int main() {
	Clock v(8, 10, 40);   //自动调用构造函数
	//测试,不给他参数值,则默认构造函数
	Clock c2;
	v.showTime();
	c2.showTime();
	return 0;
}
又去看了黑马的构造函数的分类与调用视频

其实记住的括号法就够了

#include <iostream>
using namespace std;
//按照参数分类 :无参构造(默认构造)和有参构造
//按照类型: 普通构造和拷贝构造
class Person {
public:
	Person()
	{
		cout << "Person的构造函数调用" << endl;
	}
	Person(int a)
	{
		age = a;
		cout << "Person的构造函数调用" << endl;
	}
	~Person() {
		cout << "析构函数" << endl;
	}
    //拷贝构造函数   这样就出来了一份一模一样的数据
	Person(const Person &p)   //以引用的方式传进一个数据
	{
		age = p.age;  //将传入的人身上的所有属性,拷贝到我身上
		cout << "拷贝析构函数" << endl;
	}
	int age;
};
//调用
//1.括号法   2.显示法  3. 隐式法   3.隐式转换法

void test01() {
	//1. 括号法
	//Person p1;  //默认构造函数
	//Person p1();  //编译器会认为此为函数的声明,不会认为是在创建对象
	//Person p2(10); //调有参构造函数
	//Person p3(p2); //调拷贝构造函数
	//2.显示法
	Person p1;
	Person p2 = Person(10); //有参构造    
	Person p3 = Person(p2);  //拷贝构造 
	// 不要利用拷贝函数的构造函数  初始化匿名对象 编译器会认为Person (P3)为penson p3
	// Person (p3);
	//3.隐式转换法
	Person p4 = 10;  //相当于写了 Person p4=Person (10)  有参构造
	Person p5 = p4;    //拷贝构造
}

int main() {
	test01();
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值