Nil*_*ils 1 c++ constructor default-constructor
这可能吗?例如,如果我写
Car myCar;
Run Code Online (Sandbox Code Playgroud)
然后调用不带Car参数的构造函数.如果只有构造函数接受参数,则会导致错误.
在Java中,我可以使用与上面完全相同的语句轻松声明一个对象并在以后创建它.
Art*_*ger 11
好吧,你很困惑,在Java中,一切都是对象的引用(甚至你可以想到像指针一样),而不是对象本身.所以你可能会这样做:
Car* car = NULL;
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式明确地调用c'tor:
car = new Car( params...);
Run Code Online (Sandbox Code Playgroud)
并且delete在完成使用汽车对象后不要忘记打电话.
delete car;
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的.你可以根据新的位置提出一些肮脏的黑客,这可能会让你接近,但我怀疑你对它们感兴趣.
你为什么要那样做?也许有一些干净的方法如何在C++风格中实现它.
如果您只想创建一个稍后指向某个对象的变量,那么这就是C++中使用的指针.
auto_ptr<Car> car;
car = new Car(xxx);
Run Code Online (Sandbox Code Playgroud)
或"旧路":
Car *car = NULL;
car = new Car(xxx);
delete car;
Run Code Online (Sandbox Code Playgroud)
要在向量中查找项目,通常使用以下代码:
std::vector <Car> cars;
Car *find = NULL;
for(std::vector<Car>::iterator car = cars.begin(); car != cars.end(); ++car )
for (int i=0; i<cars.size(); i++)
if (Match(*car,xxx)
{
find=car;
break;
}
Run Code Online (Sandbox Code Playgroud)
在许多情况下,你可能也不想拥有汽车矢量,而是指向汽车的指针.