最近一直在试验物体,现在我正在弄乱一个物体内的一个物体,但我现在对操作的顺序感到非常困惑。
这是我的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 ??
调用非默认构造函数再次抱歉这么多文字!