代码编译C++函数重载
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--代码编译
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A(int a = 10)
{
b = a;
cout << b << endl;
}
public:
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
A b(3);
system("pause");
return 0;
}
以上代码可以常正运行,以下代码编译错出 。
// CPPTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A(int a = 10)
{
b = a;
cout << b << endl;
}
A()
{
b = 0;
cout << b << endl;
}
public:
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
A b(3);
system("pause");
return 0;
}
以下代码可以常正编译,执行,但是结果和假想有点差距。A a()不是义定变量a,而是申明白一个数函原型,该数函返回A,并且不接受任何参数
// CPPTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A(int a = 10)
{
b = a;
cout << b << endl;
}
A()
{
b = 0;
cout << b << endl;
}
public:
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a();
A b(3);
system("pause");
return 0;
}
确正的改修方法如下
// CPPTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A(int a = 10)
{
b = a;
cout << b << endl;
}
//A()
//{
// b = 0;
// cout << b << endl;
//}
public:
int b;
};
A PrintA()
{
return A(5);
}
A a()
{
cout << "in A a() function" << endl;
return A(6);
}
int _tmain(int argc, _TCHAR* argv[])
{
A a();
A b(3);
a();
system("pause");
return 0;
}
文章结束给大家分享下程序员的一些笑话语录:
与女友分手两月有余,精神萎靡,面带菜色。家人介绍一女孩,昨日与其相亲。女孩果然漂亮,一向吝啬的我决定破例请她吃晚饭。
选了一个蛮贵的西餐厅,点了比较贵的菜。女孩眉开眼笑,与我谈得很投机。聊着聊着,她说:“我给你讲个笑话吧。”“ok”
“一只螳螂要给一只雌蝴蝶介绍对象,见面时发现对方是只雄蜘蛛。见面后螳螂问蝴蝶‘如何?’,‘他长的太难看了’,‘别看人家长的丑,人家还有网站呢’。”
“呵呵………”我笑。忽然她问:“你有网站吗?”

浙公网安备 33010602011771号