Object内部的对象混淆

时间:2015-02-25 01:10:06

标签: c++ object constructor

最近一直在试验物体,现在我正在弄乱一个物体内的一个物体,但我现在对操作的顺序感到非常困惑。

这是我的Shape类,它将容纳不同的形状对象(圆形,正方形等......) 现在,因为它只是一个对象(Square)。

shape.h
#ifndef SHAPE_H
#define SHAPE_H

#include "stdafx.h"

class Shape
{
public:
    Shape();
    Shape(int);
    Square m_square;

protected:
    int m_shapeLength;
};

#endif

这是shape.cpp文件及其构造函数:

shape.cpp
#include "stdafx.h"

Shape::Shape()
{
    printf("Default Shape Constructor Called\n");
}

Shape::Shape(int local_Length)
{
    printf("Shape Constructor Called\n");
    m_shapeLength = local_Length;
}

这是方头文件:

square.h
#ifndef SQUARE_H
#define SQUARE_H

#include "stdafx.h"

class Square
{
public:
    Square();
    Square(int);

    void printLength();
    void setLength(int);
    int getLength();

protected:
    int m_squareLength;
};

#endif

这是带有构造函数的Square.cpp:

square.cpp
#include "stdafx.h"

Square::Square()
{
    printf("Default Square Constructor Called\n");
}

Square::Square(int length)
{
    m_squareLength = length;
}

void Square::printLength()
{
    printf("%d\n", m_squareLength);
}

void Square::setLength(int value)
{
    m_squareLength = value;
}

int Square::getLength()
{
    return m_squareLength;
}

最后是主()

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    Shape shape(3);

    shape.m_square.printLength();

    printf("Length of Square is %d\n", shape.m_square.getLength());

    system("pause");
    return 0;
}

所有发布的内容(抱歉垃圾邮件......) 所以在构造函数中我有一个printf告诉我何时调用了构造函数。使用我编写的代码,Square默认构造函数在形状构造函数之前调用...这对我来说非常令人困惑,因为我首先创建一个Shape对象;期待一旦创建了shape对象,之后将从该类创建方形对象...

如何为square ??

调用非默认构造函数

再次抱歉这么多文字!

0 个答案:

没有答案