注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

C++细节(1)  

2012-04-22 10:37:44|  分类: C++编程思想(卷 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1.C++中引入typename是为了在模板声明时防止class混淆,template<typename X>和template<calss X>无区别

2.函数重载就是一个函数名对于于多个不同的参数表或者返回值
例如

float sum(int a,int b)

{return a+b;}

int sum(int a,int b,int c)

{return a+b+c;}

对于上面的两个函数如果在调用时 c = sum(x,y)则自动调用前者,如果调用时为 c = sum(x,y,z)则调用过程中调用的为后者。

函数重载在实现一个函数实现多个功能是较为麻烦,这种问题可以通过函数 模板的方式解决。

3.C++枚举是代替#define X Y的一种方式。enum day{sunday = 0,monday = 1}
如果一个函数为的参数为 int day.则可以直接用sunday 或者monday来作为参数传递,实际上就是0和1。

4.C++命名空间 namespace 。使用命名空间的最大原因是因为在C++庞大数量的变量名,操作名,类名等等中一个name可能在不同地方多次出现,容易造成混淆。为了防止这种混淆则需要程序员花很大精力去分辨哪些变量名可用,哪些不可以用。为了避免这种情况C++中引入名字空间的定义。名字空间相当于外网IP 不可以有相同的,而不同的名字在一个IP地址下可以有多个相同的局域网内地址。我们在使用名字的时候只需要指出是哪个IP地址下的局域网地址就可以访问它。例如:

#include<iostream>
using namespace std;
namespace teacher
{
void print()
{cout <<"Teacher"<<endl;}
}
namespace student
{
void print()
{cout<<"Student"<<endl;}
}
int main()
{
teacher::print();//调用teacher中的print 输出为Teacher
student::print();//调用student中的print 输出为Student
system("pause");
return 0;
}



5.跨平台编译状态设定
在诸多的C++代码中将可能出现多处包含的情形,这可能导致一个文件被多次编译。为了防止这种情况可以采用条件编译设置。
所谓条件编译,顾名思义就是在编译时设置片段状态,满足状态则编译,否则不编译。最常用:

#ifndef X //如果没有定义X

#define X //定义X下面的内容将会被编译

......

....

#endif//结束


6.C++传值调用和传引用调用
传值调用时函数局部变量是传递变量的副本,也就是说原始的传递变量会出现两个,要执行拷贝操作。
传引用调用传递的是原始函数的别名,不需要进行拷贝副本的操作。
显然相比之下传引用调用的好处不言而喻,尤其传递的是自定义的复杂数据类型时!
但是穿引用调用会改变原始传递变量的值,为了防止这种情况可以采用在函数声明时,函数的参数附加属性const,这种情况则通知系统不去改变传递过来的原始变量的值。
  评论这张
 
阅读(45)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017