类构造函数如何在C中工作
发布时间:2020-12-16 10:09:18 所属栏目:百科 来源:网络整理
导读:我看到了关于构造函数的在线C测试.我可以弄清楚大部分的答案,但我对以下的一些人感到困惑.希望有人可以帮助我. 这是一个例子. #include iostreamclass A { public: A(int n = 0) : m_n(n) { std::cout 'd'; } A(const A a) : m_n(a.m_n) { std::cout 'c'; }
我看到了关于构造函数的在线C测试.我可以弄清楚大部分的答案,但我对以下的一些人感到困惑.希望有人可以帮助我.
这是一个例子. #include <iostream> class A { public: A(int n = 0) : m_n(n) { std::cout << 'd'; } A(const A& a) : m_n(a.m_n) { std::cout << 'c'; } private: int m_n; }; void f(const A &a1,const A &a2 = A()) { } int main() { A a(2),b; const A c(a),&d = c,e = b; b = d; A *p = new A(c),*q = &a; static_cast<void>(q); delete p; f(3); std::cout << std::endl; return 0; } 我真正得不到的是为什么“& d = c”没有输出任何东西.还添加另一个重载构造函数,如A(const A * a):m_n(a-> m_n){std :: cout<< 'B';对于* q =& a,不输出任何内容.那么我该怎么做才能让它发挥作用呢? 非常感谢任何建议.我对此非常好奇. 解决方法
这些没有输出,因为d和q不是A类,即它们不是A对象. d是对A的引用,q是指向A的指针.初始化引用并初始化或指定指针根本不操纵引用/指向的A对象,因此没有输出.
为了解决你的问题 – 没有什么可以“做工”,它可以正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容