-2
以下代碼用於測試將char *字符串強制轉換爲類指針時會發生什麼。在這個類中有三個字符串數據和一個整數。當我將該類打印爲字符串格式時,數據按預期列出。但是我怎樣才能知道這個類中變量的價值?爲什麼會發生這種情況?類和字符之間的強制轉換*
#include<stdio.h>
#include<iostream>
using namespace std;
class IndexInfo
{
public:
IndexInfo(string i,string t,string a,int ty)
{indexName = i;tableName = t;Attribute = a;type = ty;}
string indexName;
string tableName;
string Attribute;
int type;
};
int main(){
string a = "1234567890";
printf("%ld",sizeof(a));
printf("%ld",sizeof(string));
char *b = "asdfghjkl1234567890";
IndexInfo * c = (IndexInfo *) b;
//cout << (*c).indexName << endl;
printf("%s\n",c);
return 0;
}
你對'printf'說謊。閱讀手冊以瞭解其先決條件,並且不違反先決條件。 –
'* c'不是有效的'IndexInfo'實例。沒有成員變量存在。你無法知道不存在的東西的價值。 – molbdnilo
@molbdnilo:'char *'允許別名的東西;我想這裏缺乏原始的建築是一種破壞行爲的方式,但我認爲這太迂腐了。如果'IndexInfo'是適合於二進制[de]序列化的類(不是),這將是一個相當合理的問題。 –