我正在通过TheNewBostons教程学习C ++,但有一个程序我无法弄清楚它是如何工作的。在问题之前,我先给你看一下货真价实的东西。
Main.cpp:
#include <iostream>
#include "People.h"
#include "Birthday.h"
using namespace std;
int main()
{
Birthday birthObject(12,28,1986);
People Ob("Vidar", birthObject);
Ob.printInfo();
}
Birthday.h:
#ifndef BIRTHDAY_H
#define BIRTHDAY_H
class Birthday
{
public:
Birthday(int m,int d,int y);
void prinDate();
private:
int month, day, year;
};
#endif
Birthday.cpp:
#include <iostream>
#include "Birthday.h"
using namespace std;
Birthday::Birthday(int m,int d,int y)
{
month = m;
day = d;
year = y;
}
void Birthday::prinDate()
{
cout << day << "/" << month << "-" << year << endl;
}
People.h:
#ifndef PEOPLE_H
#define PEOPLE_H
#include <string>
#include "Birthday.h"
using namespace std;
class People
{
public:
People(string x, Birthday bo);
void printInfo();
private:
string name;
Birthday dateOfBirth;
};
#endif
People.cpp:
#include "People.h"
#include "Birthday.h"
#include <iostream>
#include <string>
using namespace std;
People::People(string x, Birthday bo)
: name(x), dateOfBirth(bo)
{
}
void People::printInfo()
{
cout << name << " was born on ";
dateOfBirth.prinDate();
}
我不知道的事情是如何将对象用作变量和参数,以及如何在不调用构造函数的情况下创建对象(在People.h中)。
让我们逐步进行此操作:
Birthday birthObject(12,28,1986);
在这里,您要创建一个新birthObject
的Birthday
类类型的局部变量,并作为参数传递(12,289,1986)。这将调用Birthday类的三参数构造函数
People Ob("Vidar", birthObject);
在这里,您正在创建Ob
类型的局部变量People
(请注意,通用约定的类名以大写字母开头,变量以小写字母开头)并作为参数传递(“ Vidar”和birthObject)。
这将调用People的两个参数的构造函数。定义为:
People::People(string x, Birthday bo): name(x), dateOfBirth(bo) { }
这里有一些注意事项:
属性被初始化(名称,dateOfBirth)(这涉及到每个属性的一个额外的副本构造函数)。
Ob.printInfo();
最后,调用Ob实例的printInfo()方法……这又调用Ob的属性dateOfBirth的prinData()方法。这些方法没有参数,并在相应的实例上调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句