我寫了一個簡單的程序來看看C++如何處理字符串對象的指針(OOP中的新對象),我驚訝地發現那個是string* as
這是分配內存地址string a
,沒有存儲相當於&a
的值。此外,控制檯未將值打印到*as
。這可能是我的最終或系統上的錯誤,或者在這裏錯過了一些基本的東西?C++字符串指針與它指向的字符串沒有相同的內存地址
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
string a = "asdf";
string* as = &a;
string* as_holder = &a;
int main()
{
cout << "a = " << a << "\t" << "&a = " << &a << " *as = " << *as << endl
<< "as = " << as << endl
<< "++as = " << ++as << endl
<< "*as = " << *as << endl << endl;
return 0;
}
輸出:
a = asdf &a = 011ff68C *as =
as = 011FF6A8
++as = 011FF6A8
*as =
請編輯您的問題以包含實際輸出。 –
另請注意'++ as'和下面的'* as'會導致未定義的行爲。 –
你的問題與你的代碼沒有關係,因爲你沒有顯示沒有給出正確輸出的代碼區域 – smac89