关于以下代码说法正确的有? #include<iostream> #include <map> #include <memory> using namespace std; std::map<int, char*> my; std::pair<int, char*> test() {     int a = 10;     char buff[128];     sprintf(buff, "%d test", 99);     return std::make_pair(a, buff); } int main() {     my.insert(test());     for (auto iter = my.begin(); iter != my.end(); ++iter)     {         cout << iter->first << endl;         cout << iter->second << endl;     }     return 0; }

区块链毕设网qklbishe.com为您提供问题的解答

关于以下代码说法正确的有?
      
#include<iostream> #include <map> #include <memory> using namespace std; std::map<int, char*> my; std::pair<int, char*> test() {     int a = 10;     char buff[128];     sprintf(buff, "%d test", 99);     return std::make_pair(a, buff); } int main() {     my.insert(test());     for (auto iter = my.begin(); iter != my.end(); ++iter)     {         cout << iter->first << endl;         cout << iter->second << endl;     }     return 0; }
A错误:因为返回的pair是通过复制构造函数形成的,而a是普通变量是传值构造,所以a的值销不销毁跟创建后的对象没有关系
B正确:因为buff是通过地址构造的,所以buf被销毁后,返回的结果就会出错
C正确:map中插入一个新对象
D错误:因为智能指针是局部变量,并且返回的对象不是智能指针,所以还是会销毁,并不会解决问题
E正确:静态变量的值保存在全局区,不会被销毁

26:05

以上就是关于问题关于以下代码说法正确的有? #include<iostream> #include <map> #include <memory> using namespace std; std::map<int, char*> my; std::pair<int, char*> test() {     int a = 10;     char buff[128];     sprintf(buff, "%d test", 99);     return std::make_pair(a, buff); } int main() {     my.insert(test());     for (auto iter = my.begin(); iter != my.end(); ++iter)     {         cout << iter->first << endl;         cout << iter->second << endl;     }     return 0; }的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 关于以下代码说法正确的有? #include<iostream> #include <map> #include <memory> using namespace std; std::map<int, char*> my; std::pair<int, char*> test() {     int a = 10;     char buff[128];     sprintf(buff, "%d test", 99);     return std::make_pair(a, buff); } int main() {     my.insert(test());     for (auto iter = my.begin(); iter != my.end(); ++iter)     {         cout << iter->first << endl;         cout << iter->second << endl;     }     return 0; }