如果我执行以下操作,我会对发生的情况感到有些困惑:
class a{
int i;
public:
a(){}
};
class b: public a{
};
int main(){
b b1;
}
Run Code Online (Sandbox Code Playgroud)
由于类b没有构造函数,它使用什么构造函数?它是否使用默认构造函数a?或者它自己的编译器生成了一个?
所以我有一个基类Animal,它有两个继承自它的类,它们是猫和狗.这两个课程都重新定义了一种纯粹的虚拟方法,这种方法只会为猫猫咪"喵喵叫",而对狗来说则是"低音".在我的主要功能中,我希望能够做到这样的事情:
int main (void) {
Animal a;
dog d;
while (cin >> a) //is this even possible? would it be cin >> d; instead?
cout << a << endl;
return(0);
}
Run Code Online (Sandbox Code Playgroud)
所以这应该让动物说出功能,但我怎么能这样做呢?另外,我很困惑,如果你不知道用户将要使用的动物类型,那么你如何确定使用哪种说话功能,你会使用模板类吗?
我想知道如何使用sort函数对类中私有的向量进行排序:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class A{
private:
const vector<int> myvec;
A(vector<int>& vec) : myvec(vec) { }
public:
const vector<int>& getvec() { return myvec; }
int get_sec_element(){
int sec_ele = 0;
sort(myvec.begin(), myvec.end());
sec_ele = myvec[2];
return sec_ele;
}
};
Run Code Online (Sandbox Code Playgroud)
因此,如果我创建A myvec_object并使用已包含值的向量填充它,则调用myvec_object.get_sec_ele()将返回向量中的第2个元素.但是,编译器给出了一个巨大的错误消息:"从此处实例化".可能是什么问题呢?
目前我的重载operator>>函数接受输入[4: 1 2 3 4 ]并且工作正常。但是我怎样才能忽略任意数量的空格以便它可以接受[ 4 : 1 2 3 4 ],即输入之前的任意数量的空格?
istream& operator>>( istream & stream, my_vector & vector_a ) {
string token2;
int vec_size;
vector<double> temp_vec;
bool push = false;
while (stream >> token2) {
if (token2[0] == '[' && token2[2] ==':') {
push = true;
}
if (token2 == "]") {
break;
}
else if(!(token2[0] == '[' && token2[2] ==':')) {
stream.setstate(ios::badbit);
}
if(push) {
istringstream str(token2);
double v;
if …Run Code Online (Sandbox Code Playgroud) 我有下面的代码,我正在尝试编写一个泛型函数,它接受2个迭代器和一个对象并检查任何出现次数并返回出现次数.
低于我的简单课程
class person{
string name;
int age;
public:
person(string n, int a): name(n), age(a) {}
bool operator==(person &p);
};
bool person::operator==(person &p){
return (name == p.name && age == p.age);
}
Run Code Online (Sandbox Code Playgroud)
以下是通用功能
template<typename Iter, typename Obj>
int count_obj(Iter iter1, Iter iter2, Obj &obj){
int count = 0;
for (; iter1 != iter2; iter1++){
if((*iter1) == obj)
count += 1;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
我的主要:
int main(){
vector<person *> myp;
person a("ted", 21); person b("sun", 100); person c("ted", 21);
myp.push_back(&a);myp.push_back(&b);myp.push_back(&c); …Run Code Online (Sandbox Code Playgroud)