冒号运算符(":")在这个构造函数中做了什么?它等同于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++并试图理解它.我正在查看一些代码并看到:
point3(float X, float Y, float Z) :
x(X), y(Y), z(Z) // <----- what is this used for
{
}
Run Code Online (Sandbox Code Playgroud)
位于构造函数参数旁边的"x(X),y(Y),z(Z)"是什么意思?
假设我有
std::map< std::string, std::string > m_someMapA类的私有成员变量
两个问题:(我问的唯一原因是因为我遇到过这样的代码)
这条线的目的是什么:
A::A() : m_someMap()
Run Code Online (Sandbox Code Playgroud)
现在我知道这是初始化,但你必须这样做吗?我糊涂了.
什么是默认值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)
可能的重复:
构造函数中这个奇怪的冒号成员语法是什么?
我很少在常规代码中遇到类中的单个冒号,例如:
A::member():b(),c()
{
}
Run Code Online (Sandbox Code Playgroud)
单冒号在这里的重要性是什么?为什么用在这里?有时是强制性的吗?如果是,在哪些情况下?
我想创建一种方法来向控制台输出添加颜色,其工作方式与std::left和类似std::setw()。我最终得到了下面的代码,它完全按照我想要的方式工作。我了解它是如何工作的,但我想澄清一些事情。
这是代码:
#include <iostream>
#include <Windows.h>
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
enum class color { blue = FOREGROUND_BLUE, green, cyan, red, purple, yellow, white, bright = FOREGROUND_INTENSITY };
class coutColor {
public:
WORD Color;
coutColor(color colorvalue) : Color((WORD)colorvalue) { }
~coutColor() { SetConsoleTextAttribute(hConsole, (WORD)7); }
};
std::ostream& operator<<(std::ostream& os, const coutColor& colorout) {
SetConsoleTextAttribute(hConsole, colorout.Color);
return os;
}
int main() {
std::cout << coutColor(color::green) << "This text is green!\n";
std::cout << color::red << "This text is red! …Run Code Online (Sandbox Code Playgroud) 请问有人能告诉我这个操作符在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_)部分.它有什么作用?这是运算符重载的情况吗?
提前致谢!