亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1671 | 回復: 2
打印 上一主題 下一主題

Linux下編寫C++遇到了些問題··(具體問題,請進貼,謝謝) [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-09-30 09:36 |只看該作者 |倒序瀏覽
各位編程高手們:

最近我在學習C++,看到了復制構造函數(shù)這一塊,遇到些問題,想請教一下大家,vc和vim中編寫C++的一些區(qū)別,一下是源代碼:我的困惑也在下面

#include <iostream>
#include <cstring>
using namespace std;

class mystring
{
        char         *s;

        public:
                mystring (char *str);    //普通構造函數(shù)聲明
                mystring (const mystring &obj);  //自定義復制構造函數(shù)聲明
                ~mystring ()
                {
                        if (s)
                                delete [] s;
                        cout << "Freeing s\n";
                }
                void show ()
                {
                        cout << s << "\n";
                }
};

mystring::mystring (char *str)
{
        s = new char[strlen(str) + 1];
        cout << "Normally constructor called\n";
        strcpy (s, str);
               
}

mystring::mystring (const mystring &obj)
{
        s = new char[strlen(obj.s) + 1];
        cout << "Copy constructor called \n";
        strcpy (s, obj.s);
}

mystring input ()
{
        char instr[80];

        cout << "Please input a string:";
        cin >> instr;

        mystring ob (instr);   //在此會調用普通構造函數(shù)
       
        return ob;             //在此會調用自定義復制構造函數(shù)
}

int main (void)
{
        mystring obj = input ();  //調用自定義復制構造函數(shù)

        obj.show ();

        return 0;
}

本應該的運行結果是:
Please input a string : hello
Normal constructor called.
Copy constructor called.
Freeing s.
hello
Freeing s.
在vc中的運行結果確實也是這樣,但是在linux下,運行的結果卻是沒有調用復制構造函數(shù):
Please input a string : hello
Normal constructor called.
hello
Freeing s.

我有些困惑,出現(xiàn)這樣的結果是因為編譯環(huán)境的問題么?還是其他原因?
如果想讓程序運行出預想的結果應該怎么做?

我的描述可能不太準確,因為剛剛開始學習的。。
謝謝大家先。。

論壇徽章:
0
2 [報告]
發(fā)表于 2010-09-30 16:20 |只看該作者
看看vc和linux下的匯編結果 .

論壇徽章:
0
3 [報告]
發(fā)表于 2010-10-14 00:09 |只看該作者
可能是標準不一樣吧,VC默認的入棧出棧使用__stdcall,但是LInux下好像用的是標準C的入棧出棧方式,C BUILER是 __fastcall
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP