c++ 创建对象

简介: c++ 创建对象

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


目录
相关文章
|
6月前
|
设计模式 算法 编译器
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
61 0
C++中创建对象的时候加括号和不加括号的区别
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new MyClass; 4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数。
2024 0
|
Go C++ 关系型数据库
const对象,NULL和nullptr,C++中创建对象数组
 1.定义成了const之后的类 #include &lt;iostream&gt; class area { public: int x; int y; mutable int z; //不受const约束的类成员 area() :x(10), y(10), z(2) { } void printxy()const //不可以访问类中局部变量
1225 0
|
1天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
10 4
|
24天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
22 4
|
24天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4
|
24天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
18 1
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
51 1