相关疑难解决方法(0)

构造函数中这个奇怪的冒号成员(":")语法是什么?

最近我见过如下例子:

#include <iostream>

class Foo {
public:
  int bar;
  Foo(int num): bar(num) {};
};

int main(void) {
  std::cout << Foo(42).bar << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这奇怪: bar(num)意味着什么?它似乎初始化成员变量,但我以前从未见过这种语法.它看起来像一个函数/构造函数调用,但对于一个int?对我没有任何意义.也许有人可以启发我.而且,顺便说一下,还有其他类似的深奥语言功能,你永远不会在一本普通的C++书中找到它吗?

c++ syntax constructor c++-faq ctor-initializer

325
推荐指数
11
解决办法
10万
查看次数

C++,构造函数后的冒号是什么意思?

可能重复:
构造函数中的冒号后的变量
C++构造函数语法问题(noob)

我这里有一些C++代码:

class demo 
{
private:
    unsigned char len, *dat;

public:
    demo(unsigned char le = 5, unsigned char default) : len(le) 
    { 
        dat = new char[len];                                      
        for (int i = 0; i <= le; i++)                             
            dat[i] = default;
    }

    void ~demo(void) 
    {                                            
        delete [] *dat;                                           
    }
};

class newdemo : public demo 
{
private:
    int *dat1;

public:
    newdemo(void) : demo(0, 0)
    {
     *dat1 = 0;                                                   
     return 0;                                                    
    }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,有什么: len(le): demo(0, 0)被称为?

它与继承有关吗?

c++

191
推荐指数
4
解决办法
16万
查看次数

C++构造函数名后的冒号是做什么的?

冒号运算符(":")在这个构造函数中做了什么?它等同于MyClass(m_classID = -1, m_userdata = 0);

class MyClass {
public:

    MyClass() : m_classID(-1), m_userdata(0) { 
    }

    int m_classID;
    void *m_userdata;
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization-list ctor-initializer

85
推荐指数
2
解决办法
5万
查看次数

冒号在构造函数中意味着什么?

可能的重复:
C++奇怪的构造函数语法
变量在构造函数中的冒号之后C++构造函数名后面的冒号(:)有
什么作用?

对于下面的C++函数:

cross(vector<int> &L_, vector<bool> &backref_, vector< vector<int> > &res_) : 

    L(L_), c(L.size(), 0), res(res_), backref(backref_) {

    run(0); 

}
Run Code Online (Sandbox Code Playgroud)

冒号(":")告诉左右两部分之间的关​​系是什么?可能,这段代码可以说什么呢?

c++ syntax initialization ctor-initializer

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

我什么时候必须使用初始化列表来初始化C++类成员?

假设我有 std::map< std::string, std::string > m_someMapA类的私有成员变量

两个问题:(我问的唯一原因是因为我遇到过这样的代码)

  1. 这条线的目的是什么:

    A::A() : m_someMap()
    
    Run Code Online (Sandbox Code Playgroud)

    现在我知道这是初始化,但你必须这样做吗?我糊涂了.

  2. 什么是默认值std::map< std::string, std::string > m_someMap,C#还定义int,double等始终初始化为defualt 0且对象为null(至少在大多数情况下)那么C++中的规则是什么?是对象初始化为defualt为null和原语为垃圾?当然我正在考虑实例变量.

编辑:

另外,既然大多数人都指出这是一种风格选择而不是必要的,那么:

A :: A():m_someMap(),m_someint(0),m_somebool(false)

c++ stl initialization map

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

请帮助理解C++:运算符

请问有人能告诉我这个操作符在C++函数中的功能吗?

class simplecanny
{
    ros::NodeHandle nh_;
    ros::NodeHandle n;
    ros::Publisher pub ;
    image_transport::ImageTransport it_;    
    image_transport::Subscriber image_sub_; //image subscriber 
    image_transport::Publisher image_pub_; //image publisher(we subscribe to ardrone image_raw)
    std_msgs::String msg;
    public:
    *** simplecanny()
        : it_(nh_) ***
    {
        image_sub_ = it_.subscribe("/ardrone/image_raw", 1, &simplecanny::imageCb, this);
        image_pub_= it_.advertise("/arcv/Image",1); 
    }

    ~simplecanny()
    {
        cv::destroyWindow(WINDOW);
    }

    ...
Run Code Online (Sandbox Code Playgroud)

simplecanny() : it_(nh_)构造函数中,我不熟悉该: it_(nh_)部分.它有什么作用?这是运算符重载的情况吗?

提前致谢!

c++ opencv operators ros

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