本次试验使用的是Visual Studio 2019 16.10.0 版本。为了体验C++20 的内容首先将C++语言标准设置成“预览 - 最新 C++ 工作草案中的功能 (/std:c++latest)”,然后新建N个ixx文件。
根据微软博客module (ixx)中的代码如下`module;
export module mymodel;
export int Add(int a, int b) {
return a + b;
};
`
我一共新建了三个modules 分别如下:
module;
export module mymodel;
export int Add(int a, int b) {
return a + b;
};
module;
export module multi;
export int Multi(int a,int b)
{
return a * b;
};
export int Add(int a, int b) {
return a*a + b*b;
};
export module myop;
export class myop
{
public:
myop() :
m_abc(0)
{
}
~myop()
{
}
int add() { return ++m_abc; }
private:
int m_abc;
};
需要注意的是我特地在Multi 模块中增加了一个Add操作用来实验当方法重名时C++是如何选择使用的方法的。下面展示调用的cpp文件
import mymodel;
import multi;
import myop;
#include <iostream>
int main()
{
myop mabc;
std::cout << "mode test : " << mabc.add() << std::endl;
std::cout << "mode test : " << Multi(6,9) << std::endl;
std::cout << "mode test : " << Add(6, 9) << std::endl;
return 0;
};
编译运行后打印结果如下图所示
并没什么意外,C++调用的Add是mymodel 中的Add。调换import的次序后
import multi;
import mymodel;
import myop;
#include <iostream>
int main()
{
myop mabc;
std::cout << "mode test : " << mabc.add() << std::endl;
std::cout << "mode test : " << Multi(6,9) << std::endl;
std::cout << "mode test : " << Add(6, 9) << std::endl;
return 0;
};
结果变成了平方和的形式,也就是说当有重名方法时,import调用的是第一个方法