首页 > 编程语言 >c++ 创建对象

c++ 创建对象

时间:2023-03-16 11:34:07浏览次数:50  
标签:name 对象 void 创建对象 c++ Person name1 string

1.定义类 一般写在.h文件中

#include<string>
#include<iostream>
using namespace std;
void print(char content[]);
void TestString1();
void TestString2();
void TestString3();

class Person
{
private:
    int age;
public:
    string name;
    Person(string name);
    ~Person();
    void printName();
};

Person::Person(string name)
{
    this->name = name;
}

Person::~Person()
{
    cout << "~Person()" <<endl;
    age=0;
    name = nullptr;
}

void Person::printName()
{
    cout << name <<endl;
}

2.使用

不通过“new”关键字,在栈上创建
通过关键字“new”,在堆上创建
两种方式的区别

在栈中的对象,其作用范围只是在函数内部,函数执行完成后就会调用析构函数,删除该对象。使用 “.” 而不是 “->” 调用对象的方法。

在堆中的对象,必须要程序员手动的去管理该对象的内存空间 。用运算符“->”调用对象的方法。new出来的对象必须用指针指明地址。

#include<string>
using namespace std;
#include"test.h"
int main(){
    Person person("wang");          //在栈中创建对象
    Person pp = Person("aa");       //在栈中创建对象
    //Person *ppp;                    //只是声明对象 没有分配空间
    Person *p = new Person("aaa");  //在堆中创建对象
    p->printName();
   

    person.printName();
    TestString3();
                         
    string name ="abc";
    string name1("abc");
    string name2(10,'a');
    string name3(name1); //用name1构造name3
    string name4(name1,2);//用name1的前两个字符构造name4
    delete p;  //用完及时删除空间
    return 0;
}

静态对象

 (1)全局静态对象在程序执行 main() 之前已经分配好存储空间 ,在 main() 执行完成后进行释放。

(2)局部静态对象是从其所在函数第一次被调用时进行创建,直到整个程序结束才进行销毁;局部静态对象只有在第一次调用时进行初始化操作。

标签:name,对象,void,创建对象,c++,Person,name1,string
From: https://www.cnblogs.com/wanglongjiang/p/17221688.html

相关文章

  • C++ string类
    小引C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象)的思想,而且底层空间......
  • [牛客BM70&LeetCode322]零钱兑换Ⅰ——DFS,记忆化搜索,动态规划(C++)
    题目描述给你一个整数数组arr,表示不同面额的硬币;以及一个整数aim,表示需要放入钱包的目标金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使用环境查询自动......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 04.角色感知组件PawnSensingComponent
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本文章对应课程第十一章43、44节。本文讲述PawnSensingComponent中的视觉感知的使用,以及对AI角色平滑转身......
  • C++学习记录
    C++recordnotebook基础导论C++特性具有c访问硬件的能力和面向对象程序的属性,以及更具有泛型编程的功能(使用模板进行编程)。OOP(面向对象编程)其中的方法有:自顶向下和......
  • C++ 构造函数和析构函数
    构造函数和析构函数目录页面问题构造函数与析构函数初始化列表转换构造拷贝构造(这种都是浅拷贝,每一项成员依次拷贝过去)默认的赋值运算符小的总结页面构造/......
  • C++ 常用语法
    1.定义一个字符串常量staticconststd::stringversion("0.0.1");staticconststd::stringname("Car-"+version);2.定义size大小staticconstexpruint64_tsh......
  • C++风格 字符串操作
    获取字符串长度              str.size();或者str.length();连接字符串                     str=str+"world";删除字符串......
  • [计算机基础笔记] C/C++
    C语言面向过程,C++面向对象。面相过程的思维方式,它更加注重这个事情的每一个步骤以及顺序。他比较直接高效,需要做什么可以直接开始干。程序=算法+数据面向对象的思维方式......
  • C++学习笔记3
    18.虚析构问题提出:在继承关系中构造和析构什么时候被调用?假如当前有类CSon继承CFather构造:当newCSon的时候,就会调用CSon(),程序跳进CSon(),在CSon()里会先调用CFather(......