天天看點

使用Vs2019 體驗C++20

本次試驗使用的是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;
};
           

編譯運作後列印結果如下圖所示

使用Vs2019 體驗C++20

并沒什麼意外,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調用的是第一個方法

使用Vs2019 體驗C++20
c++

繼續閱讀