当前位置: 代码迷 >> VC/MFC >> 新手前来报到,顺便问一个有关问题
  详细解决方案

新手前来报到,顺便问一个有关问题

热度:134   发布时间:2016-05-02 03:26:59.0
新手前来报到,顺便问一个问题
在VC中如何定义一个带参数的构造函数。
如:
Class Animal
{
public:
Animal(int height,int weight);



};
后面我要调用这个构造函数  该怎么定义
比如:
void main{
Animal AN;
AN.XX();
}
我知道上面这样定义Animal肯定不行,就想问该怎么去定义带参数的一个构造函数,求举例!
------解决思路----------------------
Animal AN(50,100)
------解决思路----------------------
构造函数是在创建类对象的时候调用的,所以肯定不能用.的方式来调用了,按1L的方式用就可以
------解决思路----------------------
例如:这里定义了4种构造函数
Class Animal
{
public:
Animal(int n1,int n2,int n3);        //构造1
Animal(int n1,int n2);                   //构造2
Animal(int n1);                              //构造3
Animal();                                        //构造4
};

用法如下
void main
{
Animal A1(100,200,300);             //构造1
Animal A2(100,200);                     //构造2
Animal A3(100);                             //构造3
Animal A4;                                       //构造4
}
------解决思路----------------------
Class Animal
{
public:
Animal(int a,int b){printf("%d",a+b)};
};
int main()
{
Animal animal(5,6);
return 0;
}

------解决思路----------------------

class Animal
{
public:
Animal(int nHeight=0,int nWeight=0) : m_nHeight(nHeight),m_nWeight(nWeight)
{
//.........
}
~Animal()
{
}

inline int  GetHeight(void) { return m_nHeight; }
inline int GetWeight(void) { return m_nWeight; }
inline void SetHeight(int nHeight) { m_nHeight = nHeight; }
inline void SetWeight(int nWeight) { m_nWeight = nWeight; }

private:
int m_nHeight; //unsigned int
int m_nWeight; //unsigned int
};

Animal animal1(50,100);
Animal animal2;
animal2.SetHeight(200);
animal2.SetWeight(250);

Animal pAnimal3 = new Animal(100,100);
Animal pAnimal4 = new Animal();
pAnimal4->SetHeight(20);
pAnimal4->SetWeight(40);

delete pAnimal3;
pAnimal3 = NULL;
delete pAnimal4;
pAnimal4 = NULL;

------解决思路----------------------
引用:
Quote: 引用:

构造函数是在创建类对象的时候调用的,所以肯定不能用.的方式来调用了,按1L的方式用就可以

但是如果我的构造函数是这个无参构造函数的话,就可以用.的方式来调用,能说下为什么有参的话就不行吗?还是说就这样规定,没有为什么

无参的也不能用.的方式调用,比如有个类A,有个无参的构造函数了,然后A a;这样写了之后,就会调用无参的构造函数
------解决思路----------------------
AN.eat();
  相关解决方案