龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C和C++语言学习总结(一)(3)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
当是输入参数时,不需要是void Func(const A a),void Func(A a),可以是void Func(A a) 不用const A a,A a的原因是函数的效率比较低,因为函数体内将产生A类型的临时对象用

  当是输入参数时,不需要是void Func(const A a),void Func(A a),可以是void Func(A& a)或void Func(const A& a)

  不用const A a,A a的原因是函数的效率比较低,因为函数体内将产生A类型的临时对象用于复制参数a,而临时对象的构造、复制和析构过程都需要消耗时间

  最好用const A&a的原因是A&a中的a可以被改变,A&a和const A&a的好处在于都不会产生临时对象,效率高;

  const A Func(const A&a )const的好处

  第一个const表示返回的是个内部产生的对象,它不能被修改

  const A Func(...)

  {...}

  const A a=Func(...);//不能是A a=Func(...);

  第二个const表示输入的参数是引用传递,函数内部不会产生临时对象,而且这个对象不能被内部修改

  第三个const表示此函数内部的所涉及的数据成员不能修改

class Stack

{

int m_num;

int GetCount(void) const;

int Pop(void);

}

int Stack::GetCount(void) const

{

m_num++;//编译错误,企图修改数据成员m_num;

Pop();//编译错误,企图调用非const函数

}

  3、文件拷贝的代码

#include

int main(int argc, char* argv[])

{

printf("Hello World!n");

FILE* in;

FILE* out;

in=fopen("d:1.txt","rb");

out=fopen("d:2.txt","wb");

char ch=fgetc(in);

while(!feof(in))

{

fputc(ch,out);

ch=fgetc(in);

}

fclose(in);

fclose(out);

return 0;

}

精彩图集

赞助商链接