由买买提看人间百态

topics

全部话题 - 话题: 构造函数
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
b***y
发帖数: 2799
1
来自主题: Programming版 - [合集] 指针问题
☆─────────────────────────────────────☆
nochoice (别无选择) 于 (Tue Sep 20 21:56:36 2005) 提到:
我有一个小问题(对各位高手来说)。
我声明一个类
class a{
int **b;
void do()
{
b[0][0].....;
}
...
}
我想这样用,好像不行
void main()
{
int b[2][3]={.....};
a *test=new a;
test->b=b;
test->do();
}
我想主程序里面声明一个多维数组(不定大小的),然后用对象里面的指针指向这个多维数
组引用,这样省了构造函数再分配空间.
有没有什么好办法实现?
☆─────────────────────────────────────☆
oOOo (\_/o!o\_/) 于 (Tue Sep 20 22:41:12 2005) 提到:
first, int**b should be public
a
s*****k
发帖数: 604
2
来自主题: Programming版 - 不用STL, C++里怎么realloc?
比如一个object array, 要再加长点,
C里面用realloc,但是realloc不调用构造函数
k***n
发帖数: 20
3
来自主题: Programming版 - 为啥gcc找不到类的构造函数?
class A {
private:
...
public:
A();
A(const char x, const char y);
A(const string& z);
...
}
int main () {
A aa;
const string str("AT");
aa(str);
return 0;
}
gcc编译提示:
no match for call to `(A) (const std::string&)'
我知道这个错误可能很低级,不吝求教。
S*********g
发帖数: 5298
4
来自主题: Programming版 - 为啥gcc找不到类的构造函数?
你这个aa(str) call 的不是costructor
constructor是在
A aa;
这一行的时候执行的
k***n
发帖数: 20
5
来自主题: Programming版 - 为啥gcc找不到类的构造函数?
哈,一句话点醒梦中人,多谢了!
e****d
发帖数: 333
6
来自主题: Programming版 - 为啥gcc找不到类的构造函数?
你实际上在用 operator overloading
#include
#include
using namespace std;
class A{
string _str;
public:
A(){}
A(const string& z):_str(z){}
void operator()(const string& z){_str=z;}//(*)
string get() const{return _str;}
};
int main () {
A aa;
const string str("AT");
aa(str);
cout< }
(*)行返回值不是void的时候,基本就是functional object了。
X****r
发帖数: 3557
7
来自主题: Programming版 - 初始化列表问题
任何构造函数都可以,包括copy constructor。
如果你在代码中可以写
A a(一坨参数);
那么对于B的成员a就可以写B::B():a(一坨参数) {}
当然,这个也一样要受access control的限制。
t****t
发帖数: 6806
8
来自主题: Programming版 - 构造函数里的异常处理
neng
z****e
发帖数: 2024
9
来自主题: Programming版 - 构造函数里的异常处理
我说得不明白,
我是想说,这样做好不好?
因为如果:
A( ):_i(0){
int* p=new int[10];
throw(type1);
}
那么这个mem leak怎么办呢?
不知道问题问的对不对。
p***o
发帖数: 1252
10
来自主题: Programming版 - 构造函数里的异常处理
That's where you need an auto_ptr.
z****e
发帖数: 2024
11
来自主题: Programming版 - 构造函数里的异常处理
哦,原来这里是我们以前那个故事的结局?
除了auto_ptr没有其他解决办法了吗?
p***o
发帖数: 1252
12
来自主题: Programming版 - 构造函数里的异常处理
Well, you can write your own, as long as the class frees the resource
upon destruction.
z****e
发帖数: 2024
13
来自主题: Programming版 - 构造函数里的异常处理
but in the case i wrote, the constructor is not finished, so the destructor
will not be called, right?
t****t
发帖数: 6806
14
来自主题: Programming版 - 构造函数里的异常处理
dui

destructor
p***o
发帖数: 1252
15
来自主题: Programming版 - 构造函数里的异常处理
class A
{
your_class obj_;
public:
A() : obj_(new int)
{
throw;
}
};
When A::A() throws, the compiler will make sure the 'partially'
constructed A will be 'partially' destructed. In this case,
the destructor of obj_ will be called, give you a chance to
release any resource acquired by obj_.

destructor
p***o
发帖数: 1252
16
来自主题: Programming版 - 构造函数里的异常处理
Just want to let him know you mean A::~A() will not be called ;)
z****e
发帖数: 2024
17
来自主题: Programming版 - 构造函数里的异常处理
明白了。
我理解是,如果一定要在ctr里边throw,而throw之前还要申请内存,就把那个要申请
内存的指针包装起来,不能是一个裸体指针,应该是一个被包装好的对象。例如auto_
ptr.
对吧。
t****t
发帖数: 6806
18
来自主题: Programming版 - 构造函数里的异常处理
1. stack unwinding will be performed.
2. result of 1: full constructed auto objects and subobjects will be full de
structed. partially constructed objects will not be destructed, but memory w
ill be released.
z****e
发帖数: 2024
19
来自主题: Programming版 - 构造函数里的异常处理
got it!

de
w
O*******d
发帖数: 20343
20
来自主题: Programming版 - 构造函数里的异常处理
用auto_ptr.
e**u
发帖数: 409
21
来自主题: Programming版 - 一个c++ constructor的问题, thanks
可能是因为那个Foo(x)里面的new会调用什么拷贝构造函数啥的吧
z****e
发帖数: 2024
22
好像说变量数目还是变化的,初始化列表怎么写?
好像是这个问题。
因为以后code的维护,不能每次加一个变量,就重写一次列表?
还有谁记得这个题目?
t****t
发帖数: 6806
23
http://www.mitbbs.com/mitbbs_article_t.php?board=Programming&gid=31177525
more detail was answered in jobhunting board, and i remember someone thought
i answered too harsh because i said he has never used template.
z****e
发帖数: 2024
24
来自主题: Programming版 - 没有经过构造函数???
class refc{
public:
refc():cnt(1){cout<<"refc ctr: "< refc(const refc& x):cnt(x.cnt){++cnt;cout<<"refc cp-ctr: "< refc& operator=(const refc& x){
cnt=x.cnt;
++cnt;
cout<<"refc op= "< return *this;
}
~refc(){--cnt;
cout<<"refc dtr "< }
void nul(){}
private:
int cnt;
};
refc f10(){
refc k;
cout<<"k exist()"< return k;
}
int main(int argc, char* argv[ ]){
refc x=f10();
}

refc ctr: 1
k exist()
refc dtr
k*****2
发帖数: 252
25
来自主题: Programming版 - 没有经过构造函数???
你用的是g++吧
VC2008的输出就不一样:
refc ctr: 1
k exist()
refc cp-ctr: 2
refc dtr 0
refc dtr 1
S**I
发帖数: 15689
26
来自主题: Programming版 - 没有经过构造函数???
do you know the difference between:
int a=1;
and
int a;
a=1;
k*****2
发帖数: 252
27
来自主题: Programming版 - 没有经过构造函数???
楼主难道想要问的不是copy ctor?而是op=
S**I
发帖数: 15689
28
来自主题: Programming版 - 没有经过构造函数???
guess you run it under debug mode? try running it under release mode.
S**I
发帖数: 15689
29
来自主题: Programming版 - 没有经过构造函数???
isn't his question "why x is initialized without constructor being called?"
z****e
发帖数: 2024
30
来自主题: Programming版 - 没有经过构造函数???
没有啊,我用的是一般g++默认模式。
S**I
发帖数: 15689
31
来自主题: Programming版 - 没有经过构造函数???
this is for VC2008
S**I
发帖数: 15689
32
来自主题: Programming版 - 没有经过构造函数???
应该是这样了,对比一下VS下面的debug和release mode的输出结果就看得出来。
X****r
发帖数: 3557
33
来自主题: Programming版 - 没有经过构造函数???
The result of f10 is directly constructed on x, i.e. k and
x are at the same location. This optimization is allowed by
the standard. An example can be found in 12.2 [class.temporary]
(2).

"<
z****e
发帖数: 2024
34
来自主题: Programming版 - 没有经过构造函数???
多谢。我没用vc,但是明白你的意思。
z****e
发帖数: 2024
35
来自主题: Programming版 - 没有经过构造函数???
原来如比。
D****A
发帖数: 360
36
来自主题: Programming版 - 没有经过构造函数???
I hate C++. so many subtleties ...
This might be so called return value optimization
what about change the return type of f10() to refc&
v*s
发帖数: 946
37
来自主题: Programming版 - 没有经过构造函数???
同意你的话。 C++是越用越害怕。
p***o
发帖数: 1252
38
来自主题: Programming版 - 没有经过构造函数???
But his code violated the semantics of the copy ctor first ...
z****e
发帖数: 2024
39
来自主题: Programming版 - 没有经过构造函数???
请给说说。
怎么回事?
这个太重要了。
p***o
发帖数: 1252
40
来自主题: Programming版 - 没有经过构造函数???
也就是说既然x从k用copy ctor得来,为什么在k的生命期结束的时候
x不能直接把k拿来用呢?如果不能,那就说明你在copy ctor里做了一
些不该做的事情,以至于x和k的内部状态不一样。
D****A
发帖数: 360
41
来自主题: Programming版 - 没有经过构造函数???

我晕了。。。。。
c*r
发帖数: 278
42
来自主题: Programming版 - 没有经过构造函数???
Copy ctor shall only create a COPY of an existing object
X****r
发帖数: 3557
43
来自主题: Programming版 - 没有经过构造函数???
不是一直就在说这个吗?编译器把x和k优化成同一个对象了,这个优化是C++允许的。
a*****i
发帖数: 268
44
来自主题: Programming版 - 没有经过构造函数???
我理解这里面有两个优化:
1.k和f10()返回值共用空间
2.k和x共用空间
第一个优化很普遍,第二个优化比较不普遍。VC里面debug模式作第一个不做第二个。
T*****9
发帖数: 2484
45
来自主题: Programming版 - 没有经过构造函数???
I hate C++ too...
s*****g
发帖数: 5159
46
来自主题: Programming版 - vector析构的时候怎么办?
我以前是用C的,C++的理解停留在C++标准制定以前的水平,99年本科学的,那时候没
教STL,应该是当
时刚刚确定STL的标准。
我这个蹩脚C++程序员学的,如果构造函数有
new / malloc
析构就要自己写
delete / free
一个类的实例用完以后要delete其指针。
这些年做算法研究一下落伍了,这些新的STL需要找工作了才重新学。汗颜啊。
B*******g
发帖数: 1593
47
来自主题: Programming版 - 问行C++代码
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_
w*********r
发帖数: 18
48
比如说
A的构造函数里怎么访问B的对象?
X****r
发帖数: 3557
49
A的构造函数里还没有B的对象呢,没法访问。
j********x
发帖数: 2330
50
来自主题: Programming版 - 问一个C++ String的初始化问题
operator+的参数可以通过隐式调用string的构造函数获得,但是两个const char*就不
行了
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)