请向我解释静态构造函数的用法。 为什么和什么时候我们会创build一个静态构造函数,并有可能超载一个?
比方说,我有一个类,有一个名为数据的成员,这是一个列表。 我想能够初始化类,例如,一个文件名(包含数据初始化列表)或与一个实际的列表。 你做这个的技术是什么? 你只是通过查看__class__检查types吗? 有什么我可能会错过的技巧吗? 我习惯了C ++,通过参数types重载很容易。
你不能把两个具有唯一参数签名的__construct函数放在一个PHP类中。 我想这样做: class Student { protected $id; protected $name; // etc. public function __construct($id){ $this->id = $id; // other members are still uninitialized } public function __construct($row_from_database){ $this->id = $row_from_database->id; $this->name = $row_from_database->name; // etc. } } 什么是在PHP中这样做的最好方法?
我已经看到两个交替使用。 两者的主要用例是什么? 有没有优点/缺点? 是一个更好的做法?
我怎么能用call_user_func_array调用一个类的构造函数 这是不可能的: $obj = new $class(); call_user_func_array(array($obj, '__construct'), $args); 因为如果构造函数有参数, 新的将失败。 约束:我不控制我必须实例化的类,也不能修改它们。 不要问我为什么要做这个疯狂的事情,这是一个疯狂的考验。
如果我重写operator=复制构造函数会自动使用新的操作符? 同样,如果我定义了一个拷贝构造函数,那么operator=自动“inheritance”拷贝构造函数的行为吗?
构造函数的目的是什么? 我在学校学习Java,在我看来,就像我们迄今为止所做的那样,构造函数在很大程度上是多余的。 目的是否还有待观察,但迄今为止,这对我来说似乎毫无意义。 例如,以下两段代码有什么区别? public class Program { public constructor () { function(); } private void function () { //do stuff } public static void main(String[] args) { constructor a = new constructor(); } } 这就是我们被教导如何做事情的任务,但不会在下面做同样的交易? public class Program { public static void main(String[] args) { function(); } private void function() { //do stuff } […]
Vector(const Vector& other) // Copy constructor { x = other.x; y = other.y; 为什么参数是一个const?
我有两个class级父母和孩子 public class Parent { public Parent() { System.out.println("Parent Constructor"); } static { System.out.println("Parent static block"); } { System.out.println("Parent initialisation block"); } } public class Child extends Parent { { System.out.println("Child initialisation block"); } static { System.out.println("Child static block"); } public Child() { System.out.println("Child Constructor"); } public static void main(String[] args) { new Child(); } […]
比方说,我有一个具体的类Class1,我正在创build一个匿名类。 Object a = new Class1(){ void someNewMethod(){ } }; 现在有什么办法可以重载这个匿名类的构造函数。 如下所示 Object a = new Class1(){ void someNewMethod(){ } public XXXXXXXX(int a){ super(); System.out.println(a); } }; 用xxxxxxxx来命名构造函数?