C++类的组合的构造函数问题

为什么构建Line的时候要4次拷贝构造函数point,另外为什么拷贝构造line2的时候,又要调用2次point的拷贝构造函数。
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){}
这种写法是组合类的拷贝构造特有的么,这是什么意思,特别是后面的p1(xp1),p2(xp2)。

 #include<iostream>
#include<cmath>
using namespace std;

class Point
{
public:
     Point(int xx=0,int yy=0)
    {
          X=xx; Y=yy;
          cout<<"Point构造函数被调用"<<endl;
    }
     Point(Point &p);//拷贝函数
     int GetX() { return X; }
     int GetY() { return Y; }
private:
     int X,Y;
};

Point::Point(Point &p)//拷贝构造函数的实现
{
    X=p.X;
    Y=p.Y;
    cout<<"Point拷贝构造函数被调用!"<<endl;
}
//类的组合
class Line
{
public:
      Line(Point xp1,Point xp2);//构造函数
      Line(Line &);//拷贝函数
      double GetLen() { return len; }
private:
      Point p1,p2;
      double len;
};
//组合类的构造函数
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)
{
    cout<<"Line构造函数被调用"<<endl;
    double x=double(p1.GetX()-p2.GetX());
    double y=double(p1.GetY()-p2.GetY());
    len=sqrt(x*x+y*y);
}

//组合类的拷贝构造函数
Line::Line(Line &L):p1(L.p1),p2(L.p2)
{
    cout<<"Line拷贝构造函数被调用"<<endl;
    len=L.len;
}

int main()
{
    Point myp1(1,1);
    Point myp2(4,5);//建立Point类的对象
    Line line(myp1,myp2);
    Line line2(line);
    cout<<"The length of the line is:";
    cout<<line.GetLen()<<endl;
    cout<<"The length of the line2 is:";
    cout<<line2.GetLen()<<endl;
    return 0;
}

4个回答

# Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){}//解释4次的原因:

# 首先这个方法是Line的构造函数,它有2个参数,类型为Point,(注意:不是引用(Point&),也不是指针(Point*))

# 其次,冒号后面的叫构造函数的初始化列表,用于初始化成员变量

# 知道这两点之后,那么再来说原因:

# c++这门语言不像java,如果参数不写成引用(Point&)或者指针(Point*),那么再传递参数的时候会建立一个对象的副本。

# 再来看看这个Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){},传入xp1时,会去创建一个Point的对象,调用1次Point的拷贝构造,

这是第1次,同理xp2,再进行p1(xp1)时,这又会调用1次Point的拷贝构造,同理p2(xp2),因此共4次
一般来说这个方法最好这么写Line::Line(const Point& xp1,const &Point xp2):p1(xp1),p2(xp2){},这样就只会调2次了

yyfbuzhidao
yyfbuzhidao 字体没调好....
大约 4 年之前 回复

冒号,初始话列表方式初始化变量。

yang909937414
Pyangs 嗯,谢谢!
大约 4 年之前 回复

Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){}//解释4次的原因:

首先这个方法是Line的构造函数,它有2个参数,类型为Point,(注意:不是引用(Point&),也不是指针(Point*))

其次,冒号后面的叫构造函数的初始化列表,用于初始化成员变量,注意是初始化

知道这两点之后,那么再来说原因:

c++这门语言不像java,如果参数不写成引用(Point&)或者指针(Point*),那么在传递参数的时候会建立一个对象的副本。

再来看看这个Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){},传入xp1时,会去创建一个Point的对象,调用1次Point的拷贝构造,这是第1次,同理xp2,再进行p1(xp1)时,这叫初始化p1,不是定义之后再赋值!这又会调用1次Point的拷贝构造,同理p2(xp2),因此共4次

一般来说这个方法最好这么写Line::Line(const Point& xp1,const Point& xp2):p1(xp1),p2(xp2){},这样就只会调2次了

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++类的组合的构造函数问题
为什么构建Line的时候要4次拷贝构造函数point,另外为什么拷贝构造line2的时候,又要调用2次point的拷贝构造函数。nLine::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)n这种写法是组合类的拷贝构造特有的么,这是什么意思,特别是后面的p1(xp1),p2(xp2)。nn```n #includen#includenusing namespace std;nnclass Pointnnpublic:n Point(int xx=0,int yy=0)n n X=xx; Y=yy;n cout<<"Point构造函数被调用"<
C++中类的构造函数,类的组合的构造函数,类的派生构造函数
 C++在编写类的时候,构造函数显得尤为的重要,尽管你有时候可能一直在使用默认的构造的函数,而自己不清楚,系统背后的工作。 1.类的构造函数     语法结构     类名(形参):初始化列表{其他初始化}或者  类名(形参){形参的初始化,和其他的初始化}   这一种在初始化时  同名初始化需要采用 this指针。 第一种类型的代码: class A { public: A(int ...
c++构造函数与拷贝构造函数,组合类构造函数
1、如果没有显示声明构造函数时,系统给生成构造函数,此时随机赋值,并不是0。若后面定义对象时有参数会报错。 #include&amp;lt;iostream&amp;gt; using namespace std; class A { private: int a; public: inline int get_a() { return a; } }; ...
如何定义组合类的构造函数
初学C++,有两个类rnclass Arnrnprivate:rn int x;rn;rnclass Brnrnpublic:rn B(A a);rnprivate:rn A m;rnrn书上是初始化列表:rnB::(A a):m(a)rnrnrnrn可是我这样写也行,不知道对不对rnB::(A a)rnrn m = a;rnrnrn还有个问题,就是作为一个成员的m,在它的类的构造函数中,是不是必须有一个rn不带参数的,否则就要写成 rnB::(A a(int)):m(a) 好象不大顺眼
请教关于组合类的构造函数!!
小弟由于做项目的需要正在学习一些C++的东西,遇到点问题希望高人能指点一二rnrn我先做了一个Point类如下:rnrn//Point.hrn#pragma oncernclass Pointrnrnpublic:rn Point(void);rn Point(double NewX, double NewY);rn ~Point(void);rn double GetX();rn double GetY();rnprivate:rn double m_x;rn double m_y;rn;rnrn//Point.cpprn#include ".\point.h"rnPoint::Point(void)rnrn m_x=0;rn m_y=0;rnrnPoint::Point(double NewX, double NewY)rnrn m_x=NewX;rn m_y=NewY;rnrnrnPoint::~Point(void)rnrnrndouble Point::GetX()rnrn return m_x;rnrndouble Point::GetY()rnrn return m_y;rnrnrn接着又作了一个Line类成员数据由两个point组成,问题出在如何初始化Line.rnrn//Line.hrn#pragma oncern#include "point.h"rnclass Linernrnpublic:rn Line (void);rn Line(double NewAX,double NewAY,double NewBX,double NewBy);//??????rn ~Point(void);rn double DistanceAB();rnprivate:rn Point a,b;rn;rn//Line.cpprn#include "StdAfx.h"rn#include ".\line.h"rn#include ".\point.h"rn#include "math.h"rnrnLine::Line(double NewAX,double NewAY,double NewBX,double NewBY):a(NewAX, NewAY),b(NewBX, NewBY)rnrnrnrnLine::~Line(void)rnrnrndouble Line::DistanceAB()rnrn double Dist;rn Dist=sqrt((a.m_x-b.m_x)(a.m_x-b.m_x)+(a.m_y-b.m_y)(a.m_y-b.m_y));rn return Dist;rnrn我是刚开始接触C++,有其它问题也希望不吝指教
关于组合类构造函数的一些问题
书上说组合类构造函数定义的一般形式是这样的:rn类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),...rn代码1:rn[code=c]Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)rn cout<<"Line的构造函数"<(p1.getX()-p2.getX());rn double y=static_cast(p1.getY()-p2.getY());rn length=sqrt(x*x+y*y);rn[/code]rn代码2:rn[code=c]Line::Line(Point xp1,Point xp2)rn p1=xp1;rn cout<<"Hello"<(p1.getX()-p2.getX());rn double y=static_cast(p1.getY()-p2.getY());rn length=sqrt(x*x+y*y);rn[/code]rn代码1的运行是对的,代码2的运行是错的,难道组合类的构造函数不能像代码2那样写?只能写成代码1的rn样子?
C++中类的组合与构造函数
首先看看构造函数的概念。在程序执行过程中,当遇到对象声明语句时,程序会想操作系统申请一定的内存空间用于存放新建的对象。而编译器不知道如何产生代码来实现初始化。所以C++做了一套对象初始化的机制,就是构造函数。然后是类的组合中,当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。和上面的解释来看,创建的时候就会被分配空间,并且自动调用构造函数来进行初始化。在创建对象时既要对
类的派生和组合的混合构造函数
以后在细致的叙述 #include&amp;lt;iostream&amp;gt; using namespace std; class A { public: A() { x = 0; } A(int x) :x(x){} int getx() { return x; } private: int x; }; class C { public: C() { c = 0; } C(int c) :...
组合类构造函数问题,菜鸟求助
代码1:rn[code=c]#include rn#include rnusing namespace std;rnclass Pointrnprivate:rn int x,y;rnpublic:rn Point(int xx,int yy)rn x=xx;rn y=yy;rn rn int getX()rn return x;rn rn int getY()rn return y;rn rn Point(Point &p);rn;rn//类的组合rnclass Linernprivate:rn Point p1,p2;rn double length;rnpublic:rn Line(Point xp1);rn double getLen()rn return length;rn rn;rnPoint::Point(Point &p)rn x=p.x;rn y=p.y;rn cout<<"Point的复制构造函数"<rn#include rnusing namespace std;rnclass Pointrnprivate:rn int x,y;rnpublic:rn Point(int xx,int yy)rn x=xx;rn y=yy;rn rn int getX()rn return x;rn rn int getY()rn return y;rn rn Point(Point &p);rn;rn//类的组合rnclass Linernprivate:rn Point p1,p2;rn double length;rnpublic:rn Line(Point xp1,Point xp2);rn double getLen()rn return length;rn rn;rnPoint::Point(Point &p)rn x=p.x;rn y=p.y;rn cout<<"Point的复制构造函数"<rnusing namespace std;rnclass Testrnprivate:rn int x,y;rnpublic:rn Test(int x);rn;rn/*Test::Test(int xx)rn x=xx;rn //y=yy;rn cout<<"Test构造函数"<
C#组合构造函数问题
如rnrnpublic class Arnrn public string a;rn public A(string a)rn rn this.a=a;rn rnrnrnrnpublic class Brnrn public string b;rn public B(string b)rn rn this.b=b;rn rnrnrnrnpublic class Crnrn public string c;rn public A Mya;rn public B Myb;rn public C(string c,string a,string b):Mya(a),Myb(b)rn rn this.c=c;rn rnrnrnrn其中 public C(string c,string a,string b):Mya(a),Myb(b) 为什么会错呢rn我学过C++里好像是这样的 rn在C#里要怎么写 rn那位回复下谢谢!
【C++学习之路】组合类的构造函数
可以发现,在创建组合类的对象的时候,构造函数的调用顺序为:(1)按内嵌对象在组合类内的声明顺序先后调用 相应对象的相应的类的构造函数(不是初始化列表的顺
组合类的构造函数的调用顺序是怎样的
代码如下:rn[code=C/C++]rn#includernusing namespace std;rnrnclass Part //部件类rnrnpublic:rn Part() rn Part(int i) cout<<"Part's construction called"<
组合类的构造函数是怎么起作用的?
现在要建立一个 line 类,数据成员包含两个point类的对象 p1,p2和double型数据表示线段长度rn我不明白组合类line的构造函数是怎么调用的?另外整个程序同不过编译rnrnrnrn#includern#includernusing namespace std;rnrn//定义点point类rnclass pointrnrnpublic:rn point(int xx=0,int yy=0)x=xx;y=yy; //构造函数rn point(point &p); //拷贝构造函数rn int getx()return x; //获得点的X坐标rn int gety()return y;rnprivate:rn int x,y;rn;rnpoint::point(point &p)rnrn x=p.x;rn y=p.y;rnrnrn//定义组合类line,其数据成员包含2个point对象和一个double类型数据表示线段长度rnclass linernrnpublic:rn line(point xp1,point xp2); //构造函数rn line(line &l1); //拷贝构造函数rn double getlen()return len; //获得线段的长度rnprivate:rn point p1,p2;rn double len;rn;rn//构造函数rnline::line (point xp1,xp2):p1(xp1),p2(xp2)//我不明白组合类line的构造函数 是怎么调用的?rn rn double a=double(p1.getx()-p2.getx());rn double b=double(p1.gety()-p2.gety());rn len=sqrt(a*a+b*b);//计算长度rnrnrn//拷贝构造函数rnline::line (line &l1):p1(l1.p1),p2(l1.p2)rnrn len=l1.len ;rnrnrn//mainrnmain()rnrn point myp1(1,5),myp2(2,4);//建立两个对象rn line line1(myp1,myp2); //建立组合类的对象rn line line2(line1);rn cout<<"the length of line1:"<
c++中构造函数,复制构造函数,组合类的说明
c++中构造函数的种类很多: 默认构造函数,无参构造函数,重载构造函数,复制构造函数(拷贝构造函数),类型转换构造函数,符号重载构造函数。 一般在用类定义对象时候,如果类中无显示的定义构造函数,那么就调用系统都默认构造函数 无参构造函数:无参构造函数一般指显示定义了构造函数,但是构造函数没有传参,一般只为成员变量提供初始值的功能。 重载构造函数:重载构造函数一般指显示定义了构造函数,而且构造函数中...
组合类中构造函数的调用次序
组合类中构造函数的调用次序: (1)调用内嵌对象的构造函数,调用次序与这些内嵌对象在类中的声明次序是一致的。若组合类调用默认构造函数(即无形参的),则内嵌对象的初始化也将调用相应的默认构造函数。注意:与构造函数初始化列表中给出的次序无关。 (2)执行本类构造函数的函数体。 (3)析构函数调用次序与构造函数正好相反。 #include &amp;amp;amp;amp;quot;iostream&amp;amp;amp;amp;quot; #include &amp;amp;amp;amp;quot
关于 类的组合 ,提一点疑问,请教大家:组合类 构造函数的定义问题
“组合类”这个概念不知道其他书本怎么称呼这个概念的,就是一个类内嵌其他类的对象作为成员的情况。rnrn我看它的形式为rnrn类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)…rn类的初始化rnrn-----------rnrn但是看的有点迷糊。rn举例如下,见注释:rnrn--------------------rn#include rnusing namespace std;rnclass Point rnrn public:rn Point(int xx,int yy);rn Point(Point &p);rn int GetX()return X;rn int GetY()return Y; rn private:rn int X,Y; rn;rnrnPoint::Point(int xx = 0,int yy = 0)rnrn X = xx;rn Y = yy;rnrnrnPoint::Point(Point &p)rnrn X = p.X;rn Y = p.Y;rn cout<<"Point 拷贝构造函数被调用"<
原型链与构造函数组合继承
<span style="color:#333333;">做为WEB攻城师必备技术JavaScript,本课程主要讲解JS高级编程中的面向对象、原型、闭包、上下文、作用域、继承等知识点</span>
借用构造函数和组合继承
借用构造函数和组合继承
关于组合构造函数的理解???
有点点长,我要请教的都在语句后面注释了:请师兄们帮我看看,解释一下:rn#includern#includernchass pointrnrnpublic: rn Point(int xx=0,int yy=0)X=xx;Y=yy;rn Point(Point &p);rn int GetX()return X;rn int GetY()return Y;rnprivate: rn int X,Y;rn;rnPoint::Point(Point &p)rnrnX=p.X;rnY=p.Y;rncout<<"Point拷贝构造函被调用"<
构造函数与类问题
#include rnusing namespace std;rnrnclass Brnrnrnpublic:rnrn B()rn rn cout<<"B"<
一般类构造函数问题
一个类的构造函数不允许返回值,如果初始化失败,怎么办?程序怎么知道呢?
继承类的构造函数问题
最近学C++,在写一个类继承时遇到问题,不知道是为什么。源代码和错误信息如下:rnclass Shapernrnpublic:rn Shape(int a,int b)rn x=a; y=b; rnprotected:rn int x,y;rn;rnrnclass Rectangle:public Shapernrn Rectangle(int a,int b,int c,int d):Shape(a,b)rn height=c; width=d; rnprotected:rn int height,width;rn;rnrnclass Square:public Rectanglernrn Square(int a,int b,int h,int w):Rectangle(a,b,h,w)rn H=h; W=w; rnprotected:rn int H,W;rn;rnrnvoid main()rnrn Rectangle rec(1,2,3,4);rnrnrn错误信息:rnd:\summer\test\main.cpp(26) : error C2248: 'Rectangle::Rectangle' : cannot access private member declared in class 'Rectangle'rn d:\summer\test\main.cpp(17) : see declaration of 'Rectangle::Rectangle'
类的构造函数的问题。
我想让一个类必须要参数才能建立,rn即只能有classA::classA(classA)和classA::classA(Parameter)两种构造函数才能起作用。rn那么,我是不是应该重载classA::classA(void)来避免编译器自做聪明呢?rn这个classA::classA(void)应该怎么写呢?直接调用析构函数吗?
类构造函数的问题
有如下定义的类rnclass Personrn private:rn str_class name;rn char sex;rn int age;rn public:rn [color=#FF0000]Person(char *,int ,char );[/color]rn ~Person();rn void print();rn;rn[color=#FF0000]其中str_class 是另外一个类[/color]rnclass str_class rn rnpublic: rn char *str; rnpublic: rnrn str_class(const char *s) rn rn str = new char[strlen(s) + 1]; rn strcpy(str,s); rn rnrn str_class(const str_class &a) rn rn str = new char[strlen(a.str) + 1]; rn strcpy(str,a.str); rn rnrnrn void print()rn rn cout << str << endl;rn rnrn ~str_class() rn rn delete str; rn rnrn; rnrn我再Person类中的构造函数是否可以写成rn[color=#FF0000]Person(char *,int ,char );[/color]rnrn我测试 是不可以 如何解释这个问题rn出错提示rn error C2512: 'str_class' : no appropriate default constructor available
关于类的构造函数的问题。
[code=c]#include rnusing namespace std;rnrnclass Bookrn string name;rn double price;rn int quantity;rnpublic:rn Book(string name,double price,int quantity)rn cout << "1" << endl;rn rn Book(string name="",double price=0.0,int quantity=0):name(name),price(price),quantity(quantity)rn cout << "2" << endl;rn rn void Sale(double price)rn double total;rn total+=price;rn if(--quantity==0)rn cout << "quantity Error!" << endl;rn rn void show(string name,double price, int quantity)rn cout << "BookName=" << name << endl;rn cout << "Price=" << price << endl;rn cout << "Quantity=" << quantity << endl;rn rn void set(string Oname,double Oprice, int Oquantity)rn name=Oname;rn price=Oprice;rn quantity=Oquantity;rn rn;rnrnint main()rnrn Book b1;rnrn[/code]rnrn定义这么个类和一些构造函数的重载,但是编译的时候会报错说can not be overloaded 说是不能重载,我大概知道错误可能是构造函数中的string类型的变量上了,具体不知道为什么错了。还是我看错地方了。希望各位大神能为我解惑,说明是哪里错了,为什么错了,希望有例子,谢谢各位。
类的构造函数问题??
//用代码分离模型Test类继承Page类rnpublic class Test:Pagernrn public string subject;rn //建立构造函数rn public Test(string subject)rn rn this.subject = subject;rn rn rn public static void Read()rn rn //建立对象,为什么出错,重载“Test”方法未获取“0”参数,rn rn Test ne = new Test("word1");rn rn
类的构造函数和问题
我定义 了一下TCStringTCString::TCString()类,rnrn定义其一个构造函数为:rnTCString::TCString(char a[])rnrn int i=0;rn lenght=0;rn while(a[i]!='\0')rn rn lenght+=1;rn i++;rn rn value=new char[lenght+1];//value为类的私有成员rn strcpy(value,a);rnrn当我在调试中定义如下时:rnrnTCString s("重载函数例子!");rn出现了错误:rn[C++ Error] main.cpp(44): E2285 Could not find a match for 'TCString::TCString(char *)'rn帮我看看是哪里的问题
类的多重继承,的构造函数的问题
高人们,我有个问题,rn我定义了一个类,然后在定义了两个public的继承类,在定义了一个类,多重继承了这两个类rnrnrn但是为什么,在这个第3层类的构造函数,我一编译的时候,就指出error C2091: function returns functionrnrn能告诉我为什么吗?rn下面是函数的定义rnrn#include rn#include rnusing namespace std;rnclass Teacherrn protected:rn string name;rn int age;rn char sex;rn string address;rn int phone;rn string title;//职称rnpublic:rn void display();rn //Teacher(string,int,char,string,int,string);rnTeacher();rn;rnclass Cadrernprotected:rn string name;rn int age;rn char sex;rn string address;rn int phone;rn string post;//职务rnpublic:rn //Cadre(string,int,char,string,int,string);rn Cadre();rn;rn这是第2部分rn//各种定义的函数的实现rn//#include"head.h"rn#include"t_c派生.cpp"rn#include rn#include rnusing namespace std;rnvoid Teacher::display()rn cout<<"姓名:"<
类构造函数初始化问题
头文件代码定义如下:rnrntypedef struct SSharingSetrnrnpublic:rn SSharingSet(SSharingSet cFrom_, int cNew_) m_Number = cFrom_.m_Number; m_Number |= (1 << cNew_);;rn bool IsEmpty() return m_Number == NoElement;;rn bool Contains(int nC_) return (m_Number & (1 << nC_)) != 0;;rnrnprivate:rn int m_Number;rnSSharingSet;rnrntypedef struct SWeakLearnerrnrn int nFeatureNum; // Feature numberrn double dError; // Training errorrn double dA, dB; // Confidence weightsrn int nTheta; // Thresholdrn SSharingSet sN; // Sharing setrn double* dK; // Constants for classes not in the sharing setrn int nDKDim; //Length for dK;rn double dTimeTaken; // Time taken to optimise this weak learner (milliseconds)rnSWeakLearner;rnrnclass CShapeFilterrnrnpublic:rn CShapeFilter();rn ~CShapeFilter();rnrn void SetTextonIndex(int nIndex_) m_TextonIndex = nIndex_;;rn int GetTextonIndex() return m_TextonIndex;;rn void SetRectangle(Rectangle rRec_) m_Rec = rRec_;;rn Rectangle GetRectangle() return m_Rec;;rn void SetClassList(CClassList cClassList_) m_ClassList = cClassList_;;rn CClassList GetClassList() return m_ClassList;;rnrn String^ ToString();rnrnprotected:rnrnprivate:rn SWeakLearner m_WL;rn Rectangle m_Rec;rn int m_TextonIndex;rn CClassList m_ClassList;rn;rnrn但是编译的时候出现如下错误:rn1>.\CShapeFilter.cpp(10) : error C2512: “SWeakLearner”: 没有合适的默认构造函数可用rnrn构造函数是这样的:rnCShapeFilter::CShapeFilter()rnrnrnrn哪位知道是什么地方出现了问题?多谢指教
关于类和构造函数的问题
[code=C/C++]rnclass Point //定义Point类rnrnpublic: //设置外部接口rnclass Point(int xx=0,int yy=0)X=xx;Y=yy;; //是不是这里本来就有class,但是可以省略??我发现写上去可以执行rnclass Point(Point &p);rn//后面省略了rnrn[/code]
关于类的构造函数的问题
1 class Xrn2 rn3 public:rn4 X() ...rn5 X(X&) ...rn6 ;rn7rn8 class Y : public Xrn9 rn10 public:rn11 Y() ...rn12 Y(Y& rhs) : X(rhs) ...rn13 ;rnrn请问:rn11 Y() ...rn12 Y(Y& rhs) : X(rhs) rn构造基类是不是这种写法?
包裹类构造函数的问题
1.String s=new String("abc");rnString ss=new String(s);rn2.Byte b=new Byte((byte)1);rnByte bb=new Byte(b);rn3.Integer i=new Integer(1);rnInteger ii=new Integer(i);rn为什么只有String那一组中的ss能够初始化成功???rnrn像第二组里面Byte bb=new Byte(b);Byte的构造函数要接受String或者byte对象,这里传一个reference进去就有问题了吗?
类的构造函数问题
我现在有一个类A,想用另外一个类A来初始化它,就这样写构造函数:rnA(A a)rnrnrn但无法编译通过,如果我改成rnA(const A &a)rnrnrn就可以了,为什么啊?
类的 多个构造函数 问题
class Class1 rn int i1;rn int i2;rn int i3;rn int i4;rn int i5;rn int i6;rnrn Class1() rnrn Class1(int i1, int i2) rn i1 = i1;rn i2 = i2;rn rnrn Class1(int i1, int i2, int i3, int i4) rn i1 = i1;rn i2 = i2;rn i3 = i3;rn i4 = i4;rn rnrn Class1(int i1, int i2, int i3, int i4, int i5, int i6) rn i1 = i1;rn i2 = i2;rn i3 = i3;rn i4 = i4;rn i5 = i5;rn i6 = i6;rn rn rn我记得可以调用本身的构造函数来赋值.不用这么麻烦的额!!!
类的构造函数问题~
比如有类:RECT,rn如何声明一个构造函数 RECT(RECT nRc);rnrn没什么要求吗找能实现 传类本身的功能就可以了,我这边写编译器报错。rnrn错误 84 error C2652: “CGUIRECT”: 非法的复制构造函数: 第一个参数不应是“CGUIRECT” e:\客户端\common\guiobject.h 22rn
类,构造函数问题。求助。
编一个计数器类,要求外界能获取计算器的值,rn能够增减其值,并且要显示地给出一个有参构造函数。rnrn
类调用构造函数的问题
类是一个概念,是虚拟的,没有实例化的类是没有“调用成员”的能力。rn对象是一个实体,就可以调用函数成员。rnrn上面两句话对吗??rnrnrn但是派生类的构造函数就有类调用构造函数的情况,这又怎么理解呢?
组合类的问题
现有主类:rnclass Arnrnpublic :rn int count;rn B cdlg;rn;rnrn子对象类:rnclass Brnrnpublic :rn void HandleData();rnrnrnvoid main()rnrnA maindlg;rnmaindlg.count=10;rn想在B类的HandleData()中处理A中的count,怎么做?(不要用全局变量)rn
对象和类——构造函数的问题
本文参照于狄泰软件学院,唐佐林老师的——《C++深度剖析教程》
C++类的构造函数问题
#includern#includernusing namespace std;rn//const int max=10;rnstruct Nodernrn char data;rn struct Node *next;rn struct Node *prior;rn;rn class linklist rn rn public:rn linklist();rn void changelist();rn void createlist();rn void printlist();rn private:rn Node *first; //first头结点 rn char a[10];rn ;rn[u]linklist::linkList()[/u]rnrn first=new Node; rn first->next=NULL;rn for(i=0;i<10;i++)rn rn s=new node;rn s->data=a[i];rn s->next=first->next;rn first->next=s;rn rn s->next=prior;rnrnvoid linklist::changelist()rnrn Node *p,*q;rn p=first; rn q=p->next; rn while(q!=first->next) rn rn q->prior=p; rn p=p->next; rn q=q->next; rn rnrnvoid linklist::createlist()rnrn int i,a[10];rn for(i=0;i<10;i++)rn cin>>a[i];rnrnvoid linklist::printlist()rnrn Node *p;rn p=first->prior;rn while(p!=first)rn rn cout<data;rn p=p->prior;rn rnrnmain()rnrn linklist list;rn list.createlist();rn list.changelist();rn list.printlist();rnrn no 'int linklist::linkList()' member function declared in class 'linklist'rn这是什么问题,没有这个功能?rn
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法