C ++-对象作为参数中的变量

树枝长老

我正在通过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);

在这里,您要创建一个新birthObjectBirthday类型的局部变量,并作为参数传递(12,289,1986)。这将调用Birthday类的三参数构造函数

People Ob("Vidar", birthObject);

在这里,您正在创建Ob类型的局部变量People(请注意,通用约定的类名以大写字母开头,变量以小写字母开头)并作为参数传递(“ Vidar”和birthObject)。

这将调用People的两个参数的构造函数。定义为:

People::People(string x, Birthday bo): name(x), dateOfBirth(bo) { }

这里有一些注意事项:

  • 这两个参数均按值传递。这意味着将为它们中的每一个调用复制构造函数(隐式,因为您尚未定义任何构造函数)。(请注意,正如在其他答案中指出的那样,最好使用const&代替)。
  • 属性被初始化(名称,dateOfBirth)(这涉及到每个属性的一个额外的副本构造函数)。

    Ob.printInfo();

最后,调用Ob实例的printInfo()方法……这又调用Ob的属性dateOfBirth的prinData()方法。这些方法没有参数,并在相应的实例上调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对象作为C ++中类的成员变量

目标C对象作为C ++类中的实例变量

C ++:变量作为模板参数

C# 将 List<T> 中的对象作为参数传递

仅将在C ++中定义了operator +的对象作为参数

将对象作为参数传递给C ++中的函数

如何将对象列表作为函数中的参数传递,然后使用对象的属性C#

在 C++ 中创建新对象时将未命名对象作为参数传递

变量作为C ++ 11属性参数

C ++枚举类作为变量模板参数

指针作为C中的参数

c ++类对象作为函数参数

C ++对象作为接口方法的参数

C#-作为“输出”参数的匿名对象?

Arduino C ++将对象作为参数传递

C++:将对象作为参数传递

C ++将变量作为对象进行比较

c# 将类变量作为参数在方法 LINQ 中传递,例如?

从C#将表类型对象作为输入参数传递给Oracle中的存储过程

C ++在线程中传递带有自定义对象的std :: function作为参数

如何使用 C# Expression API 将对象列表作为 Lamba 中的参数

对象的方法作为c ++中另一个类的方法参数

是否可以使用指向未实例化对象的指针作为C ++中的变量?

C ++无法将在方法中作为指针传递的对象分配给变量

我可以使用变量的值作为C#中对象的名称吗

将对象作为参数传递给C ++时修改的对象

有没有办法像java中的c++中的'&'那样将变量作为参数获取?

在C ++中以状态作为参数传递Functor

函数中的C ++代码作为参数