C++ 动态初始化对象

C++ 动态初始化对象

在这个背景下,我们将讨论使用动态构造函数来初始化对象。

术语 “动态初始化对象” 指的是在运行时初始化对象,或在此时给它赋予初始值。可以通过利用 构造函数 并为其提供 参数 来实现。当一个类有许多构造函数,每个构造函数都有不同的输入集时,这是非常有用的。

动态构造函数

术语 “动态函数 Object() { [native code] }” 指的是在运行时用于分配内存的函数 Object() { [native code] }

new运算符用于在运行时分配内存,而 delete运算符 用于在运行时 释放 内存。

动态分配

方法

在下面的示例中,内存在堆上分配,并且变量的默认函数 Object() { [native code] } 使用new动态初始化。

这个函数被类 “jtp” 的对象调用,然后输出动态分配变量 ptr 的值。

使用new运算符进行动态对象初始化的软件如下所示:

#include <iostream>
using namespace std;

class jtp {
int* ptr;

public:
jtp()
{
ptr = new int;
*ptr = 10;
}

void display()
{
cout<< *ptr<<endl;
}
};

int main()
{
jtp obj1;

obj1.display();

return 0;
}

输出:

10

动态释放内存

方法

为了在下面的代码中动态释放内存,使用delete。使用赋值运算符来覆盖对象 obj1 中的内容,使用delete运算符来 释放 对象obj1。

利用delete运算符动态释放内存的代码如下所示。

#include <iostream>
using namespace std;

class jtp {
int* ptr;

public:
jtp()
{
ptr = new int;
*ptr = 10;
}

void display()
{
cout<< "Value: " << *ptr
<<endl;
}
};

int main()
{
jtp* obj1 = new jtp();
jtp* obj2 = new jtp();

obj2 = obj1;

obj1->display();
obj2->display();

delete obj1;

return 0;
}

输出:

Value: 10
Value: 10

以下是一个C++程序的示例,展示了如何动态初始化对象并计算银行存款:

#include <iostream>
using namespace std;

class bank {
int principal;
int years;
float interest;
float returnvalue;

public:
bank() {}

bank(int p, int y, float i)
{
principal = p;
years = y;
interest = i/100;
returnvalue = principal;
cout<< "\nDeposited amount (float):";

for (int i = 0; i < years; i++) {
returnvalue = returnvalue
* (1 + interest);
}
}

bank(int p, int y, int i)
{
principal = p;
years = y;
interest = float(i)/100;
returnvalue = principal;
cout<< "\nDeposited amount"
<< " (integer):";

for (int i = 0; i < years; i++) {
returnvalue = returnvalue
* (1 + interest);
}
}

void display(void)
{
cout<<returnvalue
<<endl;
}
};

int main()
{
int p = 300;
int y = 3;
int I = 6;
float i = 3.25;

bank b1(p, y, i);

b1.display();

bank b2(p, y, I);

b2.display();

return 0;
}

输出:

Deposited amount (float):330.211

Deposited amount (integer):357.305

示例:

在这个示例中,我们有一个 “学生” 类,它有两个私有数据成员。

1) rNo - 用于跟踪学号

2) 使用perc函数保存百分比。

#include <iostream>
using namespace std;

struct Student {
private:
int rNo;
float perc;

public:
Student(int r, float p)
{
rNo = r;
perc = p;
}

void read(void)
{
cout<< "Enter roll number: ";
cin>>rNo;
cout<< "Enter percentage: ";
cin>>perc;
}
void print(void)
{
cout<<endl;
cout<< "Roll number: " <<rNo<<endl;
cout<< "Percentage: " <<perc<< "%" <<endl;
}
};

int main()
{
cout<< "Enter roll number to initialize the object: ";
int roll_number;
cin>>roll_number;
cout<< "Enter percentage to initialize the object: ";
float percentage;
cin>> percentage;

struct Student std(roll_number, percentage);
cout<< "After initializing the object, the values are..." <<endl;
std.print();

std.read();
std.print();

return 0;
}

输出:

Enter roll number to initialize the object: 20
Enter percentage to initialize the object: 40
After initializing the object, the values are...

Roll number: 20
Percentage: 40%
Enter roll number: 30
Enter percentage: 50
Roll number: 30
Percentage: 50%

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程