由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问行C++代码
相关主题
请教C++问题template 类的继承问题
c++ question我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
问个copy constructor的问题还有一个问题
一道Microsoft的面试题Re: VC里面的stl支持是不是很弱?
不明白C++的一个地方这段code有啥问题?
[合集] C++的弱问题vector在constructor里初始化
Initialization list的一个问题问个题。
c++类未完成初始化,如何引用this?问个c++问题
相关话题的讨论汇总
话题: ptr话题: base话题: auto话题: ctor话题: ref
进入Programming版参与讨论
1 (共1页)
B*******g
发帖数: 1593
1
auto_ptr test(new Base);--1
auto_ptr test= new Base;--2
有啥区别么?
在我的机器上2在进入
void operator delete(
void *pUserData
)
时 pUserData是非法的(但是非NULL) 1 就没问题
报错的地方是assertion
N***m
发帖数: 4460
2
1 uses copy constructor
2 uses assigment copy constrcutor
do not know other stuffs.

【在 B*******g 的大作中提到】
: auto_ptr test(new Base);--1
: auto_ptr test= new Base;--2
: 有啥区别么?
: 在我的机器上2在进入
: void operator delete(
: void *pUserData
: )
: 时 pUserData是非法的(但是非NULL) 1 就没问题
: 报错的地方是assertion

B*******g
发帖数: 1593
3
ahh? U sure?

【在 N***m 的大作中提到】
: 1 uses copy constructor
: 2 uses assigment copy constrcutor
: do not know other stuffs.

N***m
发帖数: 4460
4
不sure,我是新手。

【在 B*******g 的大作中提到】
: ahh? U sure?
z****e
发帖数: 2024
5
2是错误的。
因为:
explicit auto_ptr(T* p=0);

【在 B*******g 的大作中提到】
: auto_ptr test(new Base);--1
: auto_ptr test= new Base;--2
: 有啥区别么?
: 在我的机器上2在进入
: void operator delete(
: void *pUserData
: )
: 时 pUserData是非法的(但是非NULL) 1 就没问题
: 报错的地方是assertion

B*******g
发帖数: 1593
6
2 启用的是另一个ctor
auto_ptr(auto_ptr_ref<_Ty> _Right) _THROW0()
如果要阻止用户用2来声明+初始化一个auto_ptr的话我觉得办法应该是有的,但是别人
没这么做我也
知道2的话里面_Myptr的值很怪,不过任何操作都没问题。

【在 z****e 的大作中提到】
: 2是错误的。
: 因为:
: explicit auto_ptr(T* p=0);

B*******g
发帖数: 1593
7
那再问问你
Base * t1(new Base);
Base * t2 = new Base;
是不是也用到了copy constructor copy assignment operator?

【在 N***m 的大作中提到】
: 不sure,我是新手。
z****e
发帖数: 2024
8
你这个是标准库的STL,还是VC下边的?

【在 B*******g 的大作中提到】
: 2 启用的是另一个ctor
: auto_ptr(auto_ptr_ref<_Ty> _Right) _THROW0()
: 如果要阻止用户用2来声明+初始化一个auto_ptr的话我觉得办法应该是有的,但是别人
: 没这么做我也
: 知道2的话里面_Myptr的值很怪,不过任何操作都没问题。

z****e
发帖数: 2024
9
只要ctor是explicit的话,2 就完了。
我用g++ 4.2.4, 这个是不行的。

【在 B*******g 的大作中提到】
: 2 启用的是另一个ctor
: auto_ptr(auto_ptr_ref<_Ty> _Right) _THROW0()
: 如果要阻止用户用2来声明+初始化一个auto_ptr的话我觉得办法应该是有的,但是别人
: 没这么做我也
: 知道2的话里面_Myptr的值很怪,不过任何操作都没问题。

z****e
发帖数: 2024
10
你这个是指针初始化,t1,t2都是pod,它们的ctor都是trivial的。

【在 B*******g 的大作中提到】
: 那再问问你
: Base * t1(new Base);
: Base * t2 = new Base;
: 是不是也用到了copy constructor copy assignment operator?

相关主题
[合集] C++的弱问题template 类的继承问题
Initialization list的一个问题我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
c++类未完成初始化,如何引用this?还有一个问题
进入Programming版参与讨论
z****e
发帖数: 2024
11
explicit auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
这个是我的源码。
auto_ptr_ref<_Ty>也无法自动转化。
所以2是编译错误。
你要是2能过编译,让我知道以下是哪家的编译器好吧。

【在 B*******g 的大作中提到】
: 2 启用的是另一个ctor
: auto_ptr(auto_ptr_ref<_Ty> _Right) _THROW0()
: 如果要阻止用户用2来声明+初始化一个auto_ptr的话我觉得办法应该是有的,但是别人
: 没这么做我也
: 知道2的话里面_Myptr的值很怪,不过任何操作都没问题。

N***m
发帖数: 4460
12
大侠们写东西总是这么让人看不懂啊

【在 z****e 的大作中提到】
: 你这个是指针初始化,t1,t2都是pod,它们的ctor都是trivial的。
B*******g
发帖数: 1593
13
VC下面的
你说explicit ctor 编译报错的话倒也合理
auto_ptr test= new Base;
应该是试图从Base* implicitly构建一个 auto_ptr 然后用这个来初始化test (
就是
copy ctor了)
不过我才发现
struct auto_ptr_ref
{ // proxy reference for auto_ptr copying
explicit auto_ptr_ref(_Ty *_Right)
: _Ref(_Right)
{ // construct from generic pointer to auto_ptr
ptr
}
_Ty *_Ref; // generic pointer to auto_ptr ptr
};
auto_ptr_ref的构造函数也是explicit的。。那之前它如何implicitly构建了
auto_ptr_ref然后调用auto_ptr(auto_ptr_

【在 z****e 的大作中提到】
: 你这个是标准库的STL,还是VC下边的?
B*******g
发帖数: 1593
14
我觉得Notam理解的不太对 所以让他再想想
你这个trivial啥意思?因为是pod所以ctor都不生成default的了? 如果是non-pod呢?

【在 z****e 的大作中提到】
: 你这个是指针初始化,t1,t2都是pod,它们的ctor都是trivial的。
t****t
发帖数: 6806
15
neither of them use copy ctor or assignment operator (there is no such thing
"assignment copy constructor").
1 use explicit ctor with regular pointer parameter. 2 is illegal, VC should
not allow it.

【在 N***m 的大作中提到】
: 1 uses copy constructor
: 2 uses assigment copy constrcutor
: do not know other stuffs.

1 (共1页)
进入Programming版参与讨论
相关主题
问个c++问题不明白C++的一个地方
pointer to base class = new derived, what will happend??[合集] C++的弱问题
为啥 const Base cb 要求Base() {} 而 const vBase vb 不呢?Initialization list的一个问题
C++ 中 myobject * a =new myobject[n] 的问题c++类未完成初始化,如何引用this?
请教C++问题template 类的继承问题
c++ question我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
问个copy constructor的问题还有一个问题
一道Microsoft的面试题Re: VC里面的stl支持是不是很弱?
相关话题的讨论汇总
话题: ptr话题: base话题: auto话题: ctor话题: ref