本次試驗使用的是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調用的是第一個方法