小编Pal*_*chi的帖子

C++中字符的指针

按照书籍,第一个cout行应该打印出存储char变量b的位置的地址,这似乎也是int变量a的情况.但第一个cout语句打印出一个奇怪的'dh ^#',而第二个语句正确打印一个十六进制值'ox23fd68'.为什么会这样?

 #include<iostream>
    using namespace std;

    int main()
    {
        char b='d';
        int a=10;
        char *c=new char[10];
        c=&b;
        int *e=&a;
        cout<<"c: "<<c<<endl;
        cout<<"e: "<<e;
    }
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
134
查看次数

C++ Destructors释放内存

#include<iostream>
#include<string>
using namespace std;

class Human{
    private:
       int *age;
       string *name;
    public:
        Human(string iname,int iage)
        {
            name=new string;
            age=new int;
            *name=iname;
            *age=iage;          
        }
        void display()
        {
            cout<<"Name "<<*name<<endl<<"Age "<<*age<<endl;
        }
        ~Human(){
            delete name;
            delete age;
            cout<<"Released all memories"<<endl;
        }

};
int main()
{
    Human *pallavi= new Human("pallavi",21);
    pallavi->display();
    delete pallavi;
    pallavi->display();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个简单的程序,它创建了Human类的对象.指定析构函数以删除两个数据变量,即int age和string name.但是在调用析构函数("delete pallavi")并再次显示变量时,我收到的输出是:

姓名
21岁

当然,整个输出是这样的:

名字pallavi
年龄21
释放所有记忆
名字
年龄21.

我的问题是,析构函数不应该释放回忆吗?这是否意味着第二次显示对象(调用析构函数后),Name和age应显示垃圾值?为什么输出显示没有Name的值和21岁的年龄?

c++

1
推荐指数
1
解决办法
847
查看次数

标签 统计

c++ ×2