首页 > 编程语言 >c++ 2.0 总结

c++ 2.0 总结

时间:2023-06-19 18:11:06浏览次数:65  
标签:总结 cout c++ destructor person say constructor 2.0 ptr

class 内存分配与释放

#include <iostream>
#include <memory>

using namespace std;

class Person {
public:
    Person() {
        cout << "person constructor" << endl;
    }

    ~Person()
    {
        cout << "person destructor" << endl;
    }

    void sayHello()
    {
        cout << "person say hello" << endl;
    }
};



static void f1()
{
    cout << "不用指针:" << endl;
    auto p = Person();
}

static void f2() {
    cout << "new/delete:" << endl;
    auto p = new Person();
    delete p;
}

static void f3() {
    cout << "unique_ptr:" << endl;
    auto p = make_unique<Person>();
}

static void f5(const shared_ptr<Person> & p) {
    p->sayHello();
}

static void f4()
{
    cout << "shared_ptr 传参:" << endl;
    auto p = make_shared<Person>();
    f5(p);
    p->sayHello();
}

static void f6(const unique_ptr<Person>& p) {
    p->sayHello();
}

static void f5() {
    cout << "unique_ptr 传参:" << endl;
    auto p = make_unique<Person>();
    f6(p);
    p->sayHello();
}


int main()
{
    
    f1();
    cout << "================================" << std::endl;
    
    f2();
    cout << "================================" << std::endl;

    f3();
    cout << "================================" << std::endl;

    f4();
    cout << "================================" << std::endl;

    cout << "shared_ptr" << endl;
    f5();
    return 0;
}

输出

不用指针:
person constructor
person destructor
================================
new/delete:
person constructor
person destructor
================================
unique_ptr:
person constructor
person destructor
================================
shared_ptr 传参:
person constructor
person say hello
person say hello
person destructor
================================
shared_ptr
unique_ptr 传参:
person constructor
person say hello
person say hello
person destructor

类的初始化

标签:总结,cout,c++,destructor,person,say,constructor,2.0,ptr
From: https://www.cnblogs.com/khlbat/p/17491837.html

相关文章

  • C++:STL库
    模板编程泛型编程STL常用组件lambda表达式异常处理内存处理部分数据结构部分算法STL由算法,容器,迭代器,适配器,仿函数(函数对象),空间适配器六大部件组成。我们将主要讲解容器,迭代器,算法和仿函数。适配器的部分会交给学员来实现,而空间适配器不会太过于深入。从上往下学习STL,学习曲......
  • C++11:多线程
    传统的C++(C++11之前)中并没有引入线程这个概念C++11引入了头文件<thread>,提供了管理线程保护共享数据线程间同步操作原子操作等  <thread>join()detach()get_id()yield()sleep_for()sleep_until() #include<thread>intmain(){ std::threadt......
  • C++ typeid关键字详解
    typeid关键字 注意:typeid是操作符,不是函数。这点与sizeof类似)运行时获知变量类型名称,可以使用typeid(变量).name()需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用intia=3;if(typeid(ia)==typeid(int)){  cout<<"in......
  • C++11:Lambda表达式
    Lambda表达式为了一些简单的函数直接调用封装[var]:表示值传递方式捕捉变量var[=]:表示值传递捕捉所有父作用域中的变量(包括成员函数中的this)[&var]:表示引用传递捕捉变量var[&]:表示引用传递捕捉所有父作用域中的变量(包括成员函数中的this)[this]:表示值传递方式捕捉当前的this指......
  • 算法题总结-均等划分
    原题https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/submissions/给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。[1<=k<=len(nums)<=16]输入示例nums=[4,3,2,3,5,2,1],k=4输出示例True......
  • UE5 C++ 定时器使用
    概念定时器在全局定时器管理器(FTimerManager类型)中管理。全局定时器管理器存在于游戏实例对象上以及每个场景中。有两个函数可以使用定时器管理器来设置定时器:SetTimer和SetTimerForNextTick,它们各自都有一些重载,每个函数都可以连接到任意类型的对象或函数委托使用访......
  • [参会感悟] 第六届全国定量遥感会议(成都)参会总结
    关键词:定量遥感会议、成都、报告、感悟作者:ludwig1860日期:2023.6.19全国定量遥感会议是遥感领域的国内盛会,每届都能吸引国内的大牛与新锐们参加与报告。其实从今年三月份发会议1号通知的那个时候起,我就重视起来了,毕竟两年一次,是该好好呈现汇报一下过去两年的研究成果了。1.......
  • 2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)
    小红书Android一面Java篇静态变量和实例变量的区别静态变量有static关键字修饰静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独......
  • 正则表达式工作实践总结
    正则表达式是一种非常强大和灵活的工具,它可以提供基于模式匹配的文本检索和替换功能,广泛应用于文本处理、字符串操作、数据校验等领域。在 JavaScript 中,正则表达式是内置的一种数据类型,可以通过字面量 /pattern/ 或者构造函数 RegExp() 来创建。在我们的工作中,根据不同的业......
  • C++ 重载运算符
    为了叙述的方便,以下内容以赋值运算符为例赋值运算符本质是一个名为operator=的函数,某些运算符必须定义为成员函数赋值运算符定义示例代码classFoo{public:Foo&operator=(constFoo&);};......