C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
C++编程中,组合类的问题。Point类与Line类的组合,在main函数中定义对象,当构造函数被调用时,输出语句
Line L1(Point M,Point N);
这种形式,VS2008中,编译器会给出警告C4930:未调用原型函数。
编译器理解为这是在main内部声明了一个函数。
这也是为什么VS2005和VS6.0不执行的原因。因为是函数原型声明,当然不会执行。
正确调用方法是,参数不要再写类型了
Line L1(m, n); 这样编译器就知道,你是声明了Line的实例变量
c++组合类的构造函数
是拷贝构造,不是operator=
sunnzy的说法不太对。 虽然这两种写法可能结果是一样的,而且也“应该”是一样的, 但实际上是取决与实现, 因为调用的是不同的函数, 完全有可能做了截然不同的事情。
C++中,关于组合类的构造函数书写问题!
c++不支持带参数对象数组的初始化的。
你可以为subject写个无参数构造函数,然后在code的构造函数里对每个对象进行赋值。
如果数据可以是static的,那就可以静态的初始化表去初始化它。
所以,先让AA对象有个无参或默认参数构造函数,
AA(int xx=0)
{
x=xx;
}
对于BB对象的构造函数,
BB()
{
y=0;
for(;y<5;y++)
a[y]=y;
}
这样就能让a[5]初始化了。
C++组合类构造函数调用顺序
先调用基类的构造函数,再调用派生类的构造函数 就像盖楼的时候先从地基开始,然后第一层,第二层。。。 如果是析构,那么先调用派生类的析构函数,再调用基类的析构函数 就像拆楼的时候想从最高层开始拆,然后往下一直到第一层
C++ 类的组合 构造函数debug
Computer(CPU_Rank cpu_r=P1,int cpu_f=0,double cpu_v=0,
RAM_Rank ram_r=R1,int ram_f=0,double s=0)
:cpu(cpu_r,cpu_f,cpu_v),
ram(ram_r,ram_f,s)
这里是否写的有问题, ram_f 是int s是double类型
而RAM::RAM(RAM_Rank,double,int) 中 第三个参数为int。
c++中组合类构造函数怎么传递值
申明一个对象时,像函数一样传参。看你构造函数怎么写
如:构造函数带一个参数的CAd类:CAd tr(5);
组合类拷贝构造函数的调用
拷贝构造函数的调用时机有三个:
1.当一个对象赋给另一个对象值时。例如对象a和b,语句a=b;调用拷贝构造函数。
2.当初始化一个构造函数时。例如你的程序中point myp1(1,1);
3.当对象作为函数的参数时。例如函数调用你的对象时 function(point myp1);
除此之外就没有调用拷贝构造函数的了。
c++编程思想(钱能主编)这本书中有非常详细的介绍。建议你看看
从main函数往下看,首先是两个point类,采用2方法调用,因此先有两个point拷贝构造函数被调用。然后是line类采用2方法调用,但是line类由point类对象构成,因此调用line类拷贝构造函数前在调用两个point拷贝构造函数(因为两个point对象)之后是一个line的拷贝构造函数调用。
你的程序没运行过吧。按照你的程序到这里就结束了。如果需要出现
point拷贝构造函数被调用
point拷贝构造函数被调用
line拷贝构造函数被调用
必须将最后一句line line2; 改为line line2=line1;才对。
这样就相当于第一种方法调用拷贝构造函数。
嗯,没错,是这样的!
组合类拷贝构造函数问题
是编译器默认的就没参数呀。唉,你这个问题问得难以让人理解!
C++作业:定义一个点和线的组合类, 在主函数中定义类的对象,
class Point
{ public: Point(){x = 0; y = 0; } int x , y };
class Line
{ public: Line(){} Point p1 , p2 };
class Shape
{
Shape() {}
Point pt;
Line li;
};
int main()
{
Shape* p = new Shape; 构造函数
delete p; 析构函数
return 0;
}
C++中关于类的定义中常对象定义后调用构造函数的问题?
常量对象必须初始化(从常量这个词的语义上去考虑)。也就是定义常对象的同时就要给对象赋初值,对象的初始化是通过构造函数完成的,如果构造函数不需要参数的话,那么可以不必显式调用,如果对象初始化时要求有参数,要么必须传参。调用的构造函数与普通的对象一样。构造函数采不采用初始化列表,,跟赋值没有关系。初始化列表主要原因一是继承,初始化基类,二是效率,当然这个效率指的是当类中有类对象时,用初始化列表,可以减少函数调用,还有就是LS说的,因为常量只能被初始化,不能被赋值,作为类的成员只能在初始化列表中初始化。
分页:123