程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 關於賦值語句的一點看法

關於賦值語句的一點看法

編輯:關於C語言

現象:

今天頭腦發熱寫出了一段這樣的代碼

vector<string> blankVector()
{
    return vector<string> blankVector;
}

我的原意本來是想把vector<string> blankVector;return blankVector合並成一句話的,結果很自然的編譯報錯了

lujun9972@X41:~/study/c/test$ make
g++ -L/usr/lib -o test test.cpp
test.cpp: 在函數‘std::vector<std::basic_string<char> > blankVector()’中:
test.cpp:27:27: 錯誤: expected primary-expression before ‘blankVector’
test.cpp:27:27: 錯誤: expected ‘;’ before ‘blankVector’
make: *** [test] 錯誤 1


解決:

如此看來C語言的編譯器在處理賦值語句(在return的時候會把return語句後面的值賦值給返回值)的時候,似乎它的右值期望的是一個對象而不是定義式.事實上這段代碼應該修改為


vector<string> blankVector()
{
    return vector<string>();
}

這裡vector<string>()生成了一個匿名的對象,然後通過return語句被賦值給了返回值.

同樣的,在初始化類成員變量時也可以使用這種方式來初始化,比如

//A.h
class A{
static map<string,string> mss;
}
//A.cpp
map<string,string> A::mss = map<string,string>();

本文出自 “暗日” 博客,請務必保留此出處http://darksun.blog.51cto.com/3874064/1264760

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved