初學者 (轉)
今天在讀《Thinking in C++》時發現一個以前使用C++中const的一個當時是在讀《Essential C++》中的一個示例時出現的問題的原因,在類中定義一個常量,使用VC無論如何也編譯不過去。
例如:
#include
using namespace std;
void main()
{
const int i = 56 ;
cout<}
但是我們不能在類中定義常量,有兩種情況:
1、
#include
using namespace std;
class CTemp
{
public:
const int i = 1 ;
};
void main()
{
const int i = 56 ;
cout<}
錯誤提示如下:
error C2258: illegal pure syntax, must be '= 0'
error C2252: 'i' : pure specifier can only be specified for functions
2、根據第一個錯誤,我們把i值設為0
#include
using namespace std;
class CTemp
{
public:
const int i = 0 ;
};
void main()
{
const int i = 56 ;
cout<}
錯誤提示如下:
error C2252: 'i' : pure specifier can only be specified for functions
MSDN提示錯誤C2252如下:'ntifier' : pure specifier can only be specified for functions
《C++思想》解釋如下:因為在類裡進行了空間分配,不能知道const的內容是什麼,所以不能把它用做編譯期間的常量。 這意味著對於類裡的常數來說,const就像它在C中一樣沒有作用。
在結構體中與在類中相同:
#include
using namespace std;
struct Temp
{
const int i = 0 ;
}tem;
void main()
{
const int i = 56 ;
cout<}
解決辦法是使用不帶例項的無標記的列舉(enum),因為列舉的所有值必須在便宜時建立,它對類來說是區域性的,但常數表示式能得到它的值
#include
using namespace std;
class CTemp
{
private:
enum{i = 0 };
};
void main()
{
const int i = 56 ;
cout<}
一切OK
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-979882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN初學者指南(轉)
- 模板初學者指南1 (轉)
- 模板初學者指南2 (轉)
- HTML初學者指南(九)(轉)HTML
- HTML初學者指南(七)(轉)HTML
- HTML初學者指南(六)(轉)HTML
- HTML初學者指南(四)(轉)HTML
- HTML初學者指南(三)(轉)HTML
- HTML初學者指南(二)(轉)HTML
- HTML初學者指南(一)(轉)HTML
- 【轉】oracle初學者100問Oracle
- Oracle初學者問題9(轉)Oracle
- Oracle初學者問題8(轉)Oracle
- Oracle初學者問題7(轉)Oracle
- Oracle初學者問題6(轉)Oracle
- Oracle初學者問題5(轉)Oracle
- Oracle初學者問題4(轉)Oracle
- Oracle初學者問題3(轉)Oracle
- Oracle初學者問題1(轉)Oracle
- Oracle初學者問題2(轉)Oracle
- apache+mod_ssl初學者指南(轉)Apache
- CCNA初學者學習經驗!(轉)
- 初學者指南
- 程式設計“初學者”入門指南 (轉)程式設計
- Linux初學者Patch使用指南(轉)Linux
- VC++初學者常見問題解惑 (轉)C++
- Nginx初學者指南Nginx
- Groovy初學者指南
- 初學者的迷茫
- JavaScript初學者必看“this”JavaScript
- npm 初學者教程NPM
- java 初學者必看Java
- 初學者救教
- RMAN 初學者指南
- 初學者的想法
- 初學者Mybatis的初級使用MyBatis
- 給初學者,因為我就是個初學者(3) (569字)
- 給初學者的入門知識之一(轉)