本文目錄一覽:
- 1、C語言中有string類型變量嗎?
- 2、c++語言中class是什麼意思
- 3、c語言中什麼是類(class),什麼是結構。兩者有什麼區別?詳細點。書上不太清楚。。謝謝
- 4、string.class是什麼東西啊,在api中string類沒有class這個屬性啊,這是圖片
- 5、c++中string和char的主要區別在哪?
C語言中有string類型變量嗎?
” C語言中有string類型變量嗎”
這裡的 string 有 二 義性。
(1) 如果 string 是普通詞彙,“C語言中有字符類型變量嗎”, 答,有。 字符類型 用 char 聲明。
char str[]=”This is a string”;
(2) 如果 string 是專用詞彙,“C語言中有string類型變量嗎”,答,沒有。string 是 類,是 class, 不是 類型,不是 type.
類 的 聲明 用 構造函數初始化,或 new 聲明。
類 — C++, 不是 C
c++語言中class是什麼意思
在C++ 語言中class是定義類的關鍵字,C++中也可以使用struct定義類。
兩者區別是,用class定義的類,如果數據成員或成員函數沒有說明則默認為private(私有)的,而用struct定義的,默認為public(公共)的。
示例 #include using namespace std; class C { public: int getAge() const { return age; } void setAge( int n ) { age = n; } private: int age; }; int main() { C c; c.setAge( 22 ); cout “My age: ” c.getAge() endl; return 0;
}
作為面向對象程序設計的基礎,掌握class的基本結構和特性是十分重要的。
c語言中什麼是類(class),什麼是結構。兩者有什麼區別?詳細點。書上不太清楚。。謝謝
類與結構的差別 :
1. 值類型與引用類型
結構是值類型:值類型在堆棧上分配地址,所有的基類型都是結構類型,例如:int 對應System.int32 結構,string 對應 system.string 結構 ,通過使用結構可以創建更多的值類型
類是引用類型:引用類型在堆上分配地址
堆棧的執行效率要比堆的執行效率高,可是堆棧的資源有限,不適合處理大的邏輯複雜的對象。所以結構處理作為基類型對待的小對象,而類處理某個商業邏輯
因為結構是值類型所以結構之間的賦值可以創建新的結構,而類是引用類型,類之間的賦值只是複製引用
註:
1.雖然結構與類的類型不一樣,可是他們的基類型都是對象(object),c#中所有類型的基類型都是object
2.雖然結構的初始化也使用了New 操作符可是結構對象依然分配在堆棧上而不是堆上,如果不使用“新建”(new),那麼在初始化所有字段之前,字段將保持未賦值狀態,且對象不可用
2.繼承性
結構:不能從另外一個結構或者類繼承,本身也不能被繼承,雖然結構沒有明確的用sealed聲明,可是結構是隱式的sealed .
類:完全可擴展的,除非顯示的聲明sealed 否則類可以繼承其他類和接口,自身也能被繼承
註:雖然結構不能被繼承 可是結構能夠繼承接口,方法和類繼承接口一樣
string.class是什麼東西啊,在api中string類沒有class這個屬性啊,這是圖片
這個是反射,String.class可以返回一個代表String類的類對象(官方叫類類型,Class Type,因為Java裡面萬物皆對象,所以類其實也是一個對象)。
另外把String實例化之後,再用getClass();方法也可以返回類對象。比如
String s = new String(“lalala”);
s.getClass();
而且String.class == s.getClass();
也就是說一個類的類對象只能有一個。
具體建議去看慕課網的視頻,講得特別好:
c++中string和char的主要區別在哪?
C++中的char是個基本類型,跟int一樣;而string卻是個庫自帶的類,聲明的變量是個對象,但不需要程序員自動析構。他們都可以被自動初始化,但還是手動初始化更保險,免得使用不當,引起coredump
下面是c 中字符串與C++字符串的區別。希望下面的state能clarify your issue. :)
1)
在C語言中,將字符串作為字符數組來處理。即C string就是 char arrary[MAX_SIZE];字符數組。
而C++中的string 是 string class, 聲明形式 string strObject.變量是個對象。只是他是C++ 標準庫提供的string類,
其實現效果跟用戶自定義的類一樣。
2) C string 字符串可以用字符串數組 char Array[MAX_SIZE];與字符串變量 char *p; 兩種方式來存儲。
以 ‘\0’為字符串結束標誌。
strlen 是把串結束符 ‘\0’算在內的,而sizeof是在對字符數組和字符變量的操作結果不一樣,引起原理不一樣。
strcmp, strncmp,連接使用strcat, 不能 str1+str2, strncat
strcpy, stncpy; strchr(str1, ch); 在str1中查找ch第一次出現的位置,返回指針變量
而C++ string是類,是對象.結束符是npos,或者-1;
不用指定字符數目的大小。
+ 取代了strcat
length和size取代了strlen
append, compare, substr,find, find_firt_of等函數
可以直接=, 而不用strncpy。
insert, replace, at, erase, clear, swap還有iterator函數的實現。
3)在函數實現部分
printf,scanf, fprinf等可以format的一個字符串中使用 “%s”時,只能用c string;如果是C++ string的話,就必須先變成
c string,否則就會報錯。如:
a)
string str (“Test string”);
printf(“%s\n”, str);
編譯錯誤:warning: cannot pass objects of non-POD type ‘struct std::string’ through ‘…’; call will
abort at runtime
執行錯誤:Illegal instruction(coredump)
b)
void strprint(const char *s)
{
printf(“function: %s\n%”, s);
}
string str (“Test string”);
strprint(str);
編譯錯誤:error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘void strprint(const
char*)’
因為c string是基本類型:char 或char array;而c++ string卻是個類,是個對象。二者的實現截然不同,不同場合的使用需
要轉換。
修改:只需要將a), b)中的str變為 str.c_str()即可。
對了這個C++ string的c_str()函數能給出c string 和C++ string的部分區別的解釋。
4.頭文件
只有在使用c string的strncpy, strtok等庫函數時才include string.h
而C++中,則在聲明 string 對象時include string
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286979.html