c++ c++-faq copy-constructor assignment-operator rule-of-three
最近我见过如下例子:
#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++代码:
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++并试图理解它.我正在查看一些代码并看到:
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)"是什么意思?
可能重复:
C++构造函数名后的冒号是做什么的?
我在网上找到了下面的例子,但是构造函数的语法让我有点困惑,特别是:符号.有人可以给我一个简短的解释吗?谢谢.
struct TestStruct {
int id;
TestStruct() : id(42)
{
}
};
Run Code Online (Sandbox Code Playgroud) 对于下面的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++构造函数名后的冒号是做什么的?
我正在读一本关于CUDA的书,我在阅读这个C++语法时遇到了麻烦.我不知道该搜索什么,这就是我在这里发帖的原因.
struct cuComplex {
float r;
float i;
cuComplex( float a, float b ) : r(a) , i(b) {}
}
Run Code Online (Sandbox Code Playgroud)
该cuComplex声明的作用是什么?特别:
cuComplex( float a, float b ) : r(a) , i(b) {}
Run Code Online (Sandbox Code Playgroud)
这叫什么,所以我可以了解它?
可能重复:
C++构造函数名后的冒号是做什么的?
我发现这个语法在C++中很奇怪
TagDetails::TagDetails(QWidget *parent) :
QDialog(parent),
ui(new Ui::TagDetails)
Run Code Online (Sandbox Code Playgroud)
这是C++中构造函数的声明......冒号后的东西代表什么,即ui(new Ui :: TagDetails)在这里是什么意思?结肠是什么?
请问有人能告诉我这个操作符在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_)部分.它有什么作用?这是运算符重载的情况吗?
提前致谢!