javaweb毕设题目 java为什么将类中的建构函式设为private,预设建构函式就不能初始化物件了呢?
java为什么将类中的建构函式设为private,预设建构函式就不能初始化物件了呢?
java为什么将类中的建构函式设为private,预设建构函式就不能初始化物件了呢?
建立类物件就会呼叫建构函式,private是只能本类成员呼叫,你建立的物件根本没法呼叫private,肯定不能初始化啊
JAVA为什么没有建构函式物件就不能初始化?
你用new 来new一个物件的时候 呼叫的就是建构函式 如果没有建构函式 你那什么来new物件
这个问题就像问1+1为什么等于2一样 完全没意义
c++ 关于预设建构函式 很物件初始化
问题出在strcpy 函式上,
strcpy(pany,"no name");
后面要加空字元,不然会一直拷贝到分配的记忆体结束,
就是所谓的访问越界,把后面的值给覆蓋了。
把 char pany[30]={ 0 }; 初始化一下,保证你OK了。
(C#) 什么是预设建构函式?如果类只有一个预设建构函式,物件的例项变数是如何初始化的?
预设构造还是是与类同名的函式, 物件的变数初始化直接用new+建构函式例项化.
建构函式、预设建构函式、合成的预设建构函式之间有什么区别和联络?
C++编译器必须为未宣告建构函式之class合成一个预设建构函式
第一,class 有member object(该member object有default constructor), class需要default constructor呼叫member object default constructor
第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default constructor会被合成出来。
第三,如果一个class申明了virtual function,,如果该类没有任何constructor,
编译器也会为它加default constructor.
(如果使用者有constructor,编译器会在他的constructor中新增一些code,用来初始化vptr)
第四,一个class(没有申明任何constructor)派生自一个继承串链,其中有一个或多个virtual base classes,编译器也会合成出一个default constructor,在其中放入每一个virtual base class的执行期存取操作的的码,
(如果使用者申明了constructors,编译器会在constructor中安插virtual base class执行期存取操作的的码)
上面四种分析合成出的default constructor都是nontrivial default constructors,
不在此情况之内的都trivial default constructors,它们实际上并不会被编译器合成出来
在合成的default constructors,只有base class subobjects和member class object会
被初始化,所有其它的nonstatic data member,如整数、整数指标、整数阵列等等都不会被编译器初始化。
预设建构函式 预设建构函式 有区别吗?
预设和预设是汉语对 default 的两种翻译。
构造一个Point类,要求有预设建构函式,由X,Y座标生成点物件的建构函式,
<pre t="code" l="sql">#include <cmath>
class Point
{
private:
double x;
double y;
public:
Point(): x(0.0), y(0.0) {};
Point(double x, double y)
{
this->x = x;
this->y = y;
}
double getX() { return x; }
double getY() { return y; }
};
class Line
{
private:
Point p1;
Point p2;
public:
Line(Point p1, Point p2)
{
this->p1 = p1;
this->p2 = p2;
}
double getDistance()
{
return sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) +
(p1.getY() - p2.getY()) * (p1.getY() - p2.getY()));
}
};
int main(int argc, char* argv[])
{
Point p1(1.0, 2.0), p2(4.0, 5.0);
Line l1(p1, p2);
printf("Distance: %fn", l1.getDistance());
return 0;
}
预设建构函式问题
第一题是个连结错误吧,你既然自己声明了一个不带引数的建构函式,为什么不定义他。
预设建构函式只有在你什么建构函式都不定义的时候才会有用,你一旦定义了任意一个建构函式,预设的就无效了。如果你不想定义预设建构函式,你可以这样定义

1lab(){}2 这种包括了2种建构函式定义 比较推荐这种lab(int a=0):num(a);
第二题,一般你不定义,都由系统来定义的,这个跟编译器有关,你换个编译器就可能是其他结果了。
还有你的show() 没有加 void...
你这里只是宣告,没有定义建构函式。
Wordsearch();/建构函式
修改为:
Wordsearch()建构函式
{
}
java建构函式初始化问题
public class A{
String qq;
int ww;
int ee;
public A(String str){
qq = str;
}
public A(String str,int a){
qq=str;
ww=a;
}
public A(String str,int a,int b){
qq=str;
ww=a;
ee=b;
}
}
public class B{
public static void main(String args[]){
A a = new A("ss")
A a = new A("ss",12)
A a = new A("ss",12,5)
}
}
你说的是这意思不