制作程序输出
making out program output
我试图在不运行的情况下计算出程序的输出。我遇到了一些问题,首先当我在const A g1;
之后放置断点时,程序如何打印输出const A 2 5
?第二,这个代码中的B b1(a1);
和B b1 = a1;
相同吗?第三,当通过参数A
的对象构造B
obj时,如您所见,A
a是A
类中的私有成员。p
函数不执行。为什么?我认为应该执行。最后一个,当执行(构造)B
obj时,应该将"const B"
字符串文字打印出来。但是,它只是为B b1(a1);
打印的。为什么不同时使用B b2(b1);
和B b3 = b2;
?
#include <iostream>
using std::cout;
class A {
public:
A(int i = 10){ t = i; f(); p("const A ");}
static void f(){ ++s;}
void g() { ++t; p("func g ");}
void operator++() {p("op++ 1 ");}
void operator++(int) {p("op++ 2 ");}
private:
void p(const char *t) const
{cout << t << s << " "
<< this->t << "n";
}
int t;
static int s;
};
const A g1; // Global object
int A::s = 0;
class B {
public:
B(A& t) : a(t)
{ cout << "const Bn"; }
private:
A a;
};
class C{
public:
C(B& t) : b(t)
{
cout << "const Cn";
}
private:
B b;
};
void h(A a){
++a;
B b(a);
a++;
}
static C g_c( *(new B( *(new A(5) ) ) ) );
int main(){
cout << "--------n";
{
A::f();
A a;
a.f(); a.g();
}
cout << "--------n";
{
A a;
h(a);
}
cout << "--------n";
{
A a1;
A a2(a1);
A a3 = a1;
a2 = a1;
cout << "--------n";
B b1(a1);
B b2(b1);
B b3 = b2;
b2 = b1;
cout << "--------n";
}
cout << "--------n";
return 0;
}
-
不能将断点放在函数体之外。那里什么都没有。全局变量在执行
main
之前进行初始化。如果您想破坏全局Ag1
的构造,请在A的构造函数中放置一个断点。 -
B b1(a1);
确实与B b1 = a1;
相同 -
p
函数不执行,因为新的A对象是复制构造的。执行的不是你的构造函数,而是编译器生成的复制构造函数。如果这个复制构造函数没有执行您希望它执行的操作,请编写自己的构造函数。 -
答案相同,第一个B对象是用你的构造函数构造的,其他对象是复制构造的。
相关文章:
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 显示错误输出的简单数组排序程序
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 如何从Windows应用程序输出到标准?
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何使用C++读取另一个程序中的源代码输出
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么这个程序的输出不如预期
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ 每次运行程序时我都会"nan"输出的问题
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 而循环:简单的除法程序输出零,不明白为什么
- 如何在 html 页面中插入 cgi 应用程序的输出?
- C 中的输出程序无明显的原因是白色的
- C++:更改简单输出程序的字体
- C++ 简单的输入/输出程序 + 枚举器
- C++字母等效数字代码输出程序
- 编译输出程序集