class Triangle: public Shape{
public:
Triangle(int a=0, int b=0):Shape(a,b){}
int area()
{
cout << "in triangle class";
return width*height/2;
}
};
在上面的代码中,wt是行
的含义Triangle(int a=0, int b=0):Shape(a,b){}
答案 0 :(得分:1)
如果Derived
类继承Base
类,那么在构造Derived
对象时,Derived
类的构造函数必须调用Base
类的构造函数。这些类的Destructor
将以相反的顺序调用。在Triangle(int a=0, int b=0):Shape(a,b){}
中,Triangle
构造函数调用Shape
构造函数传递所需的参数。没有涉及铸造。查看this和this。
答案 1 :(得分:0)
这里什么都没有。 Triangle
构造函数正在调用Shape
基类&#39;带参数列表的构造函数(a,b)
。
答案 2 :(得分:0)
这里没有演员。这是一个构造函数初始化列表。
构造Triangle
时,由于Shape
是基类,因此必须首先构造Shape
。列表Shape(a,b)
表示a,b
是赋予此Shape
的构造函数的参数。
答案 3 :(得分:0)
您的代码:
class Triangle: public Shape{
public:
Triangle(int a=0, int b=0):Shape(a,b)
{
// may do something
}
int area()
{
cout << "in triangle class";
return width*height/2;
}
};
内部如何运作:
class Triangle: public Shape{
public:
Triangle(int a=0, int b=0):
{
// always before the others instructions
base(a,b);
// may do something
}
int area()
{
cout << "in triangle class";
return width*height/2;
}
};
有几种方法可以使用构造函数:
(1)使用新的构造函数
声明一个新类class NewConstructorClass: public SomeBaseClass // dont care about parent class constructor
{
NewConstructorClass {
// do something new instruction 1
// do something new instruction 2
// do something new instruction 3
}
public:
void DoAnything()
{
// ...
}
};
(2)使用new和empty构造函数声明一个新类。一些开发人员按顺序将这些代码添加到构造函数中,或者,显式地添加一个空构造函数,作为&#34;最佳实践&#34;,以指示应该有一个构造函数。
class NewConstructorClass: public SomeBaseClass // dont care about parent class constructor
{
NewConstructorClass {
// does nothing, on purpouse
}
public:
void DoAnything()
{
// ...
}
};
(3)声明一个没有新构造函数的新类。编译器添加了一个不执行任何操作的自动构造函数。
class NewConstructorClass: public SomeBaseClass // dont care about parent class constructor
{
NewConstructorClass {
// do something new
}
public:
void DoAnything()
{
// ...
}
};
(4)使用新的构造函数声明一个新类,该构造函数调用基础构造函数。喜欢你的情景:
class NewConstructorClass: public SomeBaseClass // dont care about parent class constructor
{
NewConstructorClass: base() {
// do something new
}
public:
void DoAnything()
{
// ...
}
};
每个案例取决于您想要达到的目标。在某些情况下,可能会考虑&#34;不良做法&#34;,其他&#34;良好做法&#34;,具体取决于编码风格。
干杯。