类的实现:
#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;
}