小编cod*_*ody的帖子

一些简单的构造函数代码的解释

如果我执行以下操作,我会对发生的情况感到有些困惑:

class a{
  int i;
public:
  a(){}
};

class b: public a{
};

int main(){
  b  b1;
}
Run Code Online (Sandbox Code Playgroud)

由于类b没有构造函数,它使用什么构造函数?它是否使用默认构造函数a?或者它自己的编译器生成了一个?

c++ constructor class

2
推荐指数
1
解决办法
106
查看次数

重载>>基类的运算符

所以我有一个基类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)

所以这应该让动物说出功能,但我怎么能这样做呢?另外,我很困惑,如果你不知道用户将要使用的动物类型,那么你如何确定使用哪种说话功能,你会使用模板类吗?

c++ inheritance

1
推荐指数
1
解决办法
2448
查看次数

如何使用sort对类中的向量进行排序

我想知道如何使用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_o​​bject.get_sec_ele()将返回向量中的第2个元素.但是,编译器给出了一个巨大的错误消息:"从此处实例化".可能是什么问题呢?

c++ sorting vector

0
推荐指数
2
解决办法
270
查看次数

如何在运算符重载中忽略空格输入流&gt;&gt;

目前我的重载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)

c++ overloading

0
推荐指数
1
解决办法
3486
查看次数

通用函数中的运算符==不匹配

我有下面的代码,我正在尝试编写一个泛型函数,它接受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)

c++ operator-overloading template-function

0
推荐指数
1
解决办法
141
查看次数