今天为大家演示一下C++中的冷门非规范编写方式:在h文件中定义main函数,且用h文件中的main函数调用源文件中的函数。
写这篇文章主要是防止大家有一个固定思维,main函数不仅可以在源文件中定义执行,且main函数也可以在h文件中定义,并且调用源文件中的函数。
废话不多说,直接上示例:
1).首先打开VS2010,然后选择文件,点击新建,选择项目
2).在弹出的对话框的左边选择Visual C++,右侧选择Win32控制台应用程序,点击确定。
3).名称设置为Test后点击下一步
4).选择空项目后点击完成。
5).生成以下界面
6).右键点击源文件,选择添加->新建项
7).在弹出的对话框选择C++文件,名称设置成Test.cpp,点击添加。
8).完成后出现Test1.cpp的文件以及工作区。
9).按照上面的步骤在头文件下新建Test1.h和Test2.h,在源文件中添加Test2.cpp,完成后出现以下界面,注意,源文件和头文件要一一对应,位置不能错。
10).完成代码编写
要求:在Test2.h中定义main()函数,且在main()函数中调用Test1.cpp和Test2.cpp中的函数。
Test1.h:定义一个类print1,声明构造函数以及声明一个普通函数。
#ifndef TEST1_H
#define TEST1_H
class print1{
public:
print1(int x);
};
int add1(int i,int j);
#endif
Test1.cpp:实现构造函数和普通函数。
#include<stdio.h>
#include<iostream>
using namespace std;
#include"Test1.h"
//定义函数add1()
int add1(int i,int j){
return i+j;
}
//定义类print1的构造函数
print1::print1(int x){
cout<<x<<endl;
}
Test2.h:定义一个类print2,声明构造函数和普通函数,定义main()函数。
#ifndef TEST2_H
#define TEST2_H
#include"Test1.h"
class print2{
public:
print2(int y);
};
int add2(int i,int j);
void main(){
print1 p1(1);//调用Test1.cpp中print1类的构造函数
cout<<add1(1,2)<<endl;//调用Test1中的普通函数
print2 p2(3);//调用Test2.cpp中print2类的构造函数
cout<<add2(3,4)<<endl;//调用Test2中的普通函数
system("pause");
}
#endif
Test2.cpp:实现构造函数和普通函数。
#include<stdio.h>
#include<iostream>
using namespace std;
#include"Test2.h"
print2::print2(int y){
cout<<y<<endl;
}
int add2(int i,int j){
return i*j;
}
结果:
确实在h中定义了main()函数,且main()函数调用了其它源文件中的方法。
此非规范的编写方式演示到这里了,希望大家还是牢记规范的编写方式:
头文件中声明函数以及变量
源文件中定义函数(实现方法)