编程的起点
来源:互联网 发布:mac内置音频剪辑 编辑:程序博客网 时间:2024/06/14 15:26
今天,刚加入一个群,原本以为自己c++水平还不错的我,遇到了一个群里的提问,却只能愣在一边,这个问题如下:
#include<iostream>
#include<string>
using namespace std;
template<typename T>
void swap(T&a,T&b){
T temp=a;a=b;b=temp;
}
int main(){
double dx=3.5,dy=5.6;
int ix=6,iy=7,ia=303,ib=505;
string s1="good",s2="better";
cout<<"double dx="<<dx<<", dy="<<dy<<"/n";
cout<<"int ix="<<ix<<", iy="<<iy<<"/n";
cout<<"string s1=/""<<s1<<"/", s2="<<s2<<"/n";
swap(dx,dy);
swap(ix,iy);
swap(s1,s2);
swap(ia,ib);
cout<<"/nafter swap:/n";
cout<<"double dx="<<dx<<", dy="<<dy<<"/n";
cout<<"int ix="<<ix<<", iy="<<iy<<"/n";
cout<<"string s1=/""<<s1<<"/", s2=/""<<s2<<"/"/n";
return 0;
}
这里首先是风格的问题,都说可读性太差,模块话不强,可是我开始觉得自己以前也是这么写的,也许真的自己的代码量还是太少了,所以感觉太差了。以后会更加努力的。
第二,也是首要的程序问题,意识到本身模板函数没问题,可就是不知问题出在哪了.
很是郁闷。后来经过点拨,才意识到,本程序的swap和string(string.h里string类的swap函数)头文件里的函数重名了,所以swap函数出现二义性,一般是将自己的函数名改一下,就可以通过了。
这么简单的问题,自己就没检查出来,实在汗啊!以后要加强编码啊!
改后的代码如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
double dx=3.5,dy=5.6;
int ix=6,iy=7,ia=303,ib=505;
string s1="good";
string s2="better";
cout<<"double dx=" << dx << ", dy=" << dy << "/n";
cout<<"int ix=" << ix << ", iy=" << iy << "/n";
cout<<"string s1=/""<< s1<< "/", s2=" << s2 << "/n";
MySwap(dx,dy);
MySwap(ix,iy);
MySwap(s1,s2);
MySwap(ia,ib);
cout<<"/nafter swap:/n";
cout<<"double dx=" << dx << ", dy=" << dy << "/n";
cout<<"int ix=" << ix << ", iy=" << iy << "/n";
cout<<"string s1=/""<< s1<< "/", s2=" << s2 << "/n";
return 0;
}
template<typename T>
void MySwap(T &left, T &right){
T temp = left;
left = right;
right = temp;
}
- 编程的起点
- 编程 的起点
- 我编程的起点
- 编程之路的起点
- 编程任务(1)--达到编程的起点
- javascript 面向对象编程的起点
- 应该有新的编程起点
- 于编程之路的起点,展望未来
- 编程之路,新的起点
- 程序员生存定律--编程的起点与可能的失足
- 程序员生存定律[四] 编程的起点与升华
- 一颗小白菜的编程之旅起点
- 起点编程工作室成立了
- 一个新的起点
- 我的Blog起点
- 新的起点
- 新的起点
- 起点的下午
- TCP_Wrappers
- 无限菜单之 xml+popup 版(IE5.5+)
- UML中的常用基础类图元素详细介绍大全
- 模板元编程的循环问题
- 什么是JavaConfig
- 编程的起点
- 系统开启的服务
- 偶发现google网页的一个小bug
- vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
- 热门存储技术分析之SAS简介篇
- 根据汉字获取全拼
- tomcat 5.5连接池配置方法
- Mac OS X: 系统通知软件
- boost多位数组