我正在学习c ++,而我刚刚学习了面向对象的章节.我有一个关于在if语句中创建对象的问题.
我正在处理的问题是创建一个将显示报告标题的类.该类有一个默认构造函数,它将公司名称和报告名称设置为泛型,并且如果用户需要,还有一个带有两个参数的构造函数(字符串公司名称和报告名称).
问题是,具体而言,"双参数默认构造函数应该允许在创建新的Report对象时指定这些[公司和报告名称].如果用户创建Report对象而不传递任何参数,请使用默认值值.否则,使用用户指定的名称值."
所以我的问题是,如何创建这些对象?我理解如何创建一个没有任何参数的对象(即Report newobj;),以及参数(即Report newobj(string string);).基本上,我首先了解如何在main函数的顶部创建这些对象.但是可以根据用户选择在if语句中创建它们吗?这是我迄今为止所拥有的,显然,它不起作用:
#include <iostream>
#include <string>
#include "report.h"
using namespace std;
bool enter_company_name(); // return true if user wants to enter company name
bool print_form(); // return true if user wants to print in formatted output
int main()
{
string company_name,
report_name;
bool name = false,
format = false;
name = enter_company_name();
format = print_form();
if (name)
{
cout << "Enter company name: ";
getline(cin, company_name);
cout << "Enter report name: ";
getline(cin, report_name); …Run Code Online (Sandbox Code Playgroud) 关于Eigen,我有几个问题:
有没有人知道是否有任何计划支持很快在Eigen移动语义?在Eigen3网页的TODO列表中找不到任何内容.现在我正在使用这个swap技巧摆脱临时工,比如说
MatrixXd foo()
{
MatrixXd huge_matrix(N,N); // size N x N where N is quite large
// do something here with huge_matrix
return huge_matrix;
}
MatrixXd A(N, N);
A.swap(foo());
Run Code Online (Sandbox Code Playgroud)
我非常想swap用C++ 11风格编写上面的代码
A = foo();
Run Code Online (Sandbox Code Playgroud)
而不必担心临时返回foo().
A = foo();来摆脱这种临时性吗?或者最安全的赌注是使用swap()?