可能重复:
指向基址的指针可以指向派生对象数组吗?
我正在练习学到的东西,我尝试了下面的内容:
#include <iostream>
struct S {
S() : val(0) {}
int val;
};
struct D : S {
D() : val(1) {}
int val;
};
void f(S *s) {
for (int i = 0; i < 5; i++, s++)
std::cout << s->val;
}
int main() {
D d[5];
f(d);
}
Run Code Online (Sandbox Code Playgroud)
我觉得奇怪的是输出01010不是11111我想象的那样.所以它似乎是val从S类中获取成员而不是D每个其他循环上的类.但为什么?
我在这里问这个问题是因为我认为这更像是一个程序问题而不是其他问题.
我正在使用TI-84 Plus Sliver Edition计算器,该计算器包含可以测试小于,大于和平等的逻辑运算符.我发现当我输入表达式时:
2^34 == 2^34 - 1
Run Code Online (Sandbox Code Playgroud)
它给了我一个令人惊讶的真实.值得一提的是,我的计算器无法精确输出2 ^ 34的结果.相反,它使用指数表示法和任何其他大于33的幂.这是布尔输出中的潜在因素吗?
此外,如果第二个表达式减去1到9,则相等性测试仅返回true.当数字> = 10时,则正确返回false.
这可能是一个舍入错误吗?为什么这个表达式返回true?
我正在尝试将a的内容插入std::string到char数组中.所以我创建一个字符串流并getline对其进行操作但由于某种原因,a当我打印它时,数组中缺少最后一个字符.为什么是这样?
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::string str = "Hello, World";
std::stringstream ss(str);
char a[256];
ss.getline(&a[0], str.length());
std::cout << a; // "Hello, Worl"
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找标准库函数,如果范围[first2, last2)存在于该范围内,则返回true [first1, last1).有点名字的东西std::is_subsequence.似乎这样的事情在标准中是显而易见的但由于某种原因它不存在(或者我至少找不到它).那里有功能或方法吗?
这是我的代码,我不是很喜欢它,我知道它可以改进,但我只是不知道如何.我如何根据每条线路上的许多std::cin和相互std::cout操作来重构这个程序?是否有任何STL库魔法可以做到改善这一点?谢谢.
#include <iostream>
#include <string>
int main() {
int grade;
std::cout << "Enter the grade you recieved: ";
std::cin >> grade;
std::cout << grade << "\n\n";
if (grade == 100) {
std::cout << "You got a perfect score!\n";
} else if (grade > 90 && grade < 100) {
std::cout << "You got an A\n";
}
if (grade == 100) {
std::cout << "Grade: A+";
} else if (grade > 90 && grade < 100) { …Run Code Online (Sandbox Code Playgroud) 我将my的缓冲区设置stringstream为5字节缓冲区.只有当我打电话给sputn它时,才能读出比我想要的更多的字符.为什么是这样?
#include <iostream>
#include <sstream>
int main()
{
std::stringstream ss;
char buf[5];
ss.rdbuf()->pubsetbuf(buf, sizeof buf);
ss.rdbuf()->sputn("hello world", 12);
std::cout << ss.rdbuf(); // prints "Hello world"
}
Run Code Online (Sandbox Code Playgroud) 我去了GNU网站下载make.我去了主GNU FTP服务器选择下载.我选择make-4.1.tar.gz并提取了文件.
我不知道该怎么办,所以我去了从提取文件创建的文件夹,并./configure希望它能做我想做的事情.我还不确定它做了什么.
当我从命令行运行make它说make: command not found.我是否正确下载make以及如何将其make作为命令查看?
我在Windows上.
我正在尝试定义一个名为的方法function.它在我这样做时有效:
a = A.new
def a.function
puts 100
end
Run Code Online (Sandbox Code Playgroud)
但我希望该方法适用于任何实例变量,而不仅仅是a.例如,当我调用其他function实例时,没有任何反应.所以我习惯定义函数而不是.AaA::fa.function
class A
attr_accessor :function
attr_accessor :var
end
def A::function
self.var = 0x123
end
a = A.new
a.function
puts a.var
Run Code Online (Sandbox Code Playgroud)
这编译很好,但当我尝试调用该函数时,我得到一个错误.为什么它不起作用,我怎么能做我正在尝试的事情?
我有一个类foo和bar.foo有资源.当bar从继承foo将它也有记忆的深层副本?或者我是否必须调用foofrom bardefault-constructor的构造函数?
class foo
{
char *item;
public:
foo() : item(new char[5]) {}
};
class bar : public foo {};
Run Code Online (Sandbox Code Playgroud) 我想知道如何不使用函数.我尝试过使用,String.fromCharCode但我想我做得不对.有任何想法吗?