各位大侠,小弟今天遇到个问题:
我打算看看private拷贝构造函数能不能在类定义内部使用的问题,或者是去证实它。
有一个叫做show_val_ref的函数,采用值传递的方式,我的本意是希望调用private拷贝构造,可惜结果不是想要的,并没有执行拷贝构造!
代码如下:
#include
by
hawtriks
-
C/C++
-
2011-09-02 15:53:08 阅读(2523) 回复(8)
我在书上看了一段代码,对程序运行结果有点疑惑,请高手帮忙分析一下:
#include
[code]class Person { public: Person(){cout << "construct"<< endl;} Person(const Person& p1) { cout << "copy" << endl; } }; Person fun() { Person p1; return p1; } int main() { fun(); return 0; }[/code]为啥 不调用 拷贝构造函数,很奇怪 可是如果 fun 函数 写成这样[code]Person fun() { Person *p1 = new Person; return *p1; }[/code]就调用了,这尼玛 奇怪的
#include
gdb显示堆栈如下: #0 0xffffe410 in __kernel_vsyscall () #1 0xb7d29a30 in raise () from /lib/libc.so.6 #2 0xb7d2b153 in abort () from /lib/libc.so.6 #3 0xb7f114b0 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/libstdc++.so.6 #4 0xb7f0eed5 in ?? () from /usr/lib/libstdc++.so.6 #5 0xb7f0ef12 in std::terminate() () from /usr/lib/libstdc++.so.6 #6 0xb7f0f04a in __cxa_throw () ...
请不考虑程序的合理性 class A; A produceA() { A temp; return temp; } A a = produceA(); //该句会不会调用拷贝构造函数 /////////////////////////////////////////////////// 如果是下面这句呢 class A; A& produceA() { A temp; return temp; } A a = produceA(); //该句会不会调用拷贝构造函数 请不要考虑函数合理性,第二个用引用确实有问题,大家忽略之
代码如下:
#include
class A { public: A(const A& a); private: int x; }; A::A(const A& a) { x = a.x; //??? x是private怎么能访问 }
代码如下:
[code]
class test {
public:
test() {
cout<<"call test"<