您的位置:首页 > 财经 > 产业 > 2024的新闻有哪些_seo公司费用_网络营销app有哪些_seo网站有哪些

2024的新闻有哪些_seo公司费用_网络营销app有哪些_seo网站有哪些

2025/3/21 6:18:27 来源:https://blog.csdn.net/2301_77680189/article/details/146407808  浏览:    关键词:2024的新闻有哪些_seo公司费用_网络营销app有哪些_seo网站有哪些
2024的新闻有哪些_seo公司费用_网络营销app有哪些_seo网站有哪些

#记录一下

测试代码1:

#include<iostream>
using namespace std;class People {
private:// 成员变量(属性)string name;
public:// 构造函数People(string s) {name = s;std::cout << name;std::cout << " 调用了构造函数." << std::endl;}// 析构函数~People() {std::cout << name;std::cout << " 调用了析构函数" << std::endl;}
};
void f1() {People* p1 = new People("A");People* p2 = new People("B");People* p3 = new People("C");
}
// 主函数,用于测试
int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << "主程序运行" << endl;f1();cout<<"主程序结束运行"<<endl;return 0;
}

结果:

测试代码2:

#include<iostream>
using namespace std;class People {
private:// 成员变量(属性)string name;public:// 构造函数People(string s) {name = s;std::cout << name;std::cout << " 调用了构造函数." << std::endl;}// 析构函数~People() {std::cout << name;std::cout << " 调用了析构函数" << std::endl;}
};
void f1() {People* p1 = new People("A");People* p2 = new People("B");People* p3 = new People("C");//手动释放delete p1;delete p2;delete p3;
}
// 主函数,用于测试
int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << "主程序运行" << endl;f1();cout<<"主程序结束运行"<<endl;return 0;
}

结果:

测试代码3:

#include<iostream>
using namespace std;class People {
private:// 成员变量(属性)string name;public:// 构造函数People(string s) {name = s;std::cout << name;std::cout << " 调用了构造函数." << std::endl;}// 析构函数~People() {std::cout << name;std::cout << " 调用了析构函数" << std::endl;}
};
void f1() {People p1("A");People p2("B");People p3("C");
}
// 主函数,用于测试
int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << "主程序运行" << endl;f1();cout<<"主程序结束运行"<<endl;return 0;
}

结果:

结论:

测试代码1不会调用析构函数。原因是 new People() 动态创建的对象没有被手动释放,因此这些对象的析构函数不会被调用。

测试代码2会调用析构函数。因为的对象被手动释放。

测试代码3会调用析构函数。因为该创建对象方法生命周期结束后会自动调用析构函数。

c++不同创建对象方法的区别

方式语法内存管理适用场景
栈上创建对象People p;自动管理生命周期明确的对象
堆上创建对象People* p = new People();手动管理需要动态控制生命周期的对象
智能指针unique_ptr<People> p = make_unique<People>();自动管理现代 C++,避免内存泄漏

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com