求助
为什么“*****”没有打印#include<iostream>
using namespace std;
class A
{
public:
A(const string x):str(x)
{}
virtual void print()const
{
cout << str; <---------------没有打印
cout << "aaaaa";
}
private:
string str;
};
class B :public A
{
public:
B(const string x) :A(x)
{}
void print()const
{
cout << "1111" << endl;
A::print();
}
};
int main()
{
A* ptr = &B("*****");
ptr->print();
} A* ptr = &B("*****");
拆分开写能显示:
B b = B("*****");
A* ptr = &b; 我去,看到你这个问题,我才知道我C++基本忘光了,学了C,学C++,之后,基本还是拿C写代码,不过,翻看了下笔记,测试了一下,应该是
A* ptr = &B("*****"); 这个有问题,因为 B("*****"); 是个匿名对象,特点是,当前行执行结束后,系统会立即回收匿名对象,所以你的 ***** 不见了
因为已经被系统回收了,以下这么写,应该能解决你的问题,先将对象创建出来,然后在取地址
B a("*****");
A* ptr = &a;
ptr->print();
页:
[1]