现在的位置: 首页 > 综合 > 正文

C++ Primer 学习 (三)

2013年10月11日 ⁄ 综合 ⁄ 共 751字 ⁄ 字号 评论关闭
关于主函数main()
int main(int argc, char *argv[])
{}
或者
int main(int argc, char **argv)
{}

关于函数返回类型

return用于void;

return expression;与返回类型一致。

返回非引用类型:

函数的返回值用于初始化在调用函数处创建的临时对象

string make_plural(size_t ctr, const string &word, const string &ending)
{
return (crt == 1) ? word : word + ending;
}

返回引用:

当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身

const srting &shorterstring(const string &s1, const string &s2)
{
return s1.size() < s2.size() ? s1 : s2 ;
}

千万不能返回局部变量的引用

当函数执行完毕时,将释放分配给局部对象的存储空间,此时,对局部对象的引用就会指向不确定的内存。

引用返回左值

返回引用的函数返回一个左值。这样的函数可用于任何要求使用左值的地方:

char &get_val(string &str, string::size_type ix)
{
	return str[ix];
}

int main(int argc, char *argv[])
{
	string s("a value");
	cout<<s<<endl;
	get_val(s,0) = 'A';
	cout<<s<<endl;

	return 0;
}

这里给函数的返回值赋值,令人惊讶。由于函数返回值是一个引用,因此是正确的。如果不希望引用返回值被修改,应该申明为const

不要返回指向局部对象的指针

一旦函数结束,局部对象被释放,返回的指针就变成了指向不存在的对象,成为::悬垂指针

抱歉!评论已关闭.