草庐IT

new_order

全部标签

c++ - new 和::new 有什么区别

boost等许多库都使用::new和::delete。boost::make_shared中的示例templatetypenameboost::detail::sp_if_not_array::typemake_shared(Args&&...args){boost::shared_ptrpt(static_cast(0),BOOST_SP_MSD(T));boost::detail::sp_ms_deleter*pd=static_cast*>(pt._internal_get_untyped_deleter());void*pv=pd->address();::new(pv)T(b

c++ - new 和::new 有什么区别

boost等许多库都使用::new和::delete。boost::make_shared中的示例templatetypenameboost::detail::sp_if_not_array::typemake_shared(Args&&...args){boost::shared_ptrpt(static_cast(0),BOOST_SP_MSD(T));boost::detail::sp_ms_deleter*pd=static_cast*>(pt._internal_get_untyped_deleter());void*pv=pd->address();::new(pv)T(b

c++ - 为什么 C++ 不需要 "new"语句来初始化 std::vector?

考虑:/*bar.h*/classbar{/*Standardstuffomitted*/std::vectorfoo;};/*bar.cpp*/bar::bar(){//foo=newstd::vector();为什么即使我们没有为foo分配一个新的std::vector实例,这段代码仍然有效? 最佳答案 因为C++不是C#/Java。std::vectorfoo;这是一个对象的定义,而不是C#/Java中的引用。对象是类型的一个活生生的实例。newstd::vector()这个表达式返回一个指针。它返回一个std::vector

c++ - 为什么 C++ 不需要 "new"语句来初始化 std::vector?

考虑:/*bar.h*/classbar{/*Standardstuffomitted*/std::vectorfoo;};/*bar.cpp*/bar::bar(){//foo=newstd::vector();为什么即使我们没有为foo分配一个新的std::vector实例,这段代码仍然有效? 最佳答案 因为C++不是C#/Java。std::vectorfoo;这是一个对象的定义,而不是C#/Java中的引用。对象是类型的一个活生生的实例。newstd::vector()这个表达式返回一个指针。它返回一个std::vector

c++ - new[] 是否在 C++ 中调用默认构造函数?

当我使用new[]创建一个类数组时:intcount=10;A*arr=newA[count];我看到它调用了Acount次的默认构造函数。结果arr具有count个初始化的A类型的对象。但是如果我用同样的东西来构造一个int数组:int*arr2=newint[count];它没有被初始化。所有值都类似于-842150451尽管int的默认构造函数将其值分配给0。为什么会有如此不同的行为?默认构造函数不只为内置类型调用吗? 最佳答案 见theacceptedanswer至averysimilarquestion.当您使用new[]

c++ - new[] 是否在 C++ 中调用默认构造函数?

当我使用new[]创建一个类数组时:intcount=10;A*arr=newA[count];我看到它调用了Acount次的默认构造函数。结果arr具有count个初始化的A类型的对象。但是如果我用同样的东西来构造一个int数组:int*arr2=newint[count];它没有被初始化。所有值都类似于-842150451尽管int的默认构造函数将其值分配给0。为什么会有如此不同的行为?默认构造函数不只为内置类型调用吗? 最佳答案 见theacceptedanswer至averysimilarquestion.当您使用new[]

c++ - "sizeof new int;"是未定义的行为吗?

代码:#includeusingnamespacestd;intmain(){size_ti=sizeofnewint;cout在GCC编译器中,工作正常,没有任何警告或错误,并打印输出8.但是,在clang编译器中,我收到了以下警告:warning:expressionwithsideeffectshasnoeffectinanunevaluatedcontext[-Wunevaluated-expression]size_ti=sizeofnewint;哪一个是真的?sizeofnewint;是未定义的行为吗? 最佳答案 警告没

c++ - "sizeof new int;"是未定义的行为吗?

代码:#includeusingnamespacestd;intmain(){size_ti=sizeofnewint;cout在GCC编译器中,工作正常,没有任何警告或错误,并打印输出8.但是,在clang编译器中,我收到了以下警告:warning:expressionwithsideeffectshasnoeffectinanunevaluatedcontext[-Wunevaluated-expression]size_ti=sizeofnewint;哪一个是真的?sizeofnewint;是未定义的行为吗? 最佳答案 警告没

c++ - 是否有任何有效的用例可以在现代 C++ 中使用 new 和 delete、原始指针或 c 样式数组?

Here'sanotablevideo(StopteachingC)aboutthatparadigmchangetotakeinteachingthec++language.还有一篇值得注意的博文Ihaveadream...I'mdreamingofsocalledC++courses/classes/curriculaewillstopteaching(requiring)theirstudentstouse:...由于C++11作为既定标准,我们有Dynamicmemorymanagement设施又名智能指针。即使从早期的标准我们也有c++标准Containerslibrary作

c++ - 是否有任何有效的用例可以在现代 C++ 中使用 new 和 delete、原始指针或 c 样式数组?

Here'sanotablevideo(StopteachingC)aboutthatparadigmchangetotakeinteachingthec++language.还有一篇值得注意的博文Ihaveadream...I'mdreamingofsocalledC++courses/classes/curriculaewillstopteaching(requiring)theirstudentstouse:...由于C++11作为既定标准,我们有Dynamicmemorymanagement设施又名智能指针。即使从早期的标准我们也有c++标准Containerslibrary作