在内部和关于生成的代码,是否有真正的区别:
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}
Run Code Online (Sandbox Code Playgroud)
和
MyClass::MyClass()
{
_capacity=15;
_data=NULL;
_len=0
}
Run Code Online (Sandbox Code Playgroud)
谢谢...
为什么必须声明类成员const在构造函数初始化列表中而不是在构造函数体中初始化?
两者有什么区别?
假设我有一个复制构造函数
第一种方式:
Car(Car const& other)
: Model{other.Model}, Something{other.Something}
{}
Run Code Online (Sandbox Code Playgroud)
第二种方式:
Car(Car const& other)
{
Model = other.Model;
Something = other.Something;
}
Run Code Online (Sandbox Code Playgroud) 以下代码中的Demo1和Demo2之间有区别吗?
#include <iostream>
class Base {};
class Demo1 : public Base {
public:
Demo1() : instance_variable(5) {
}
int instance_variable;
};
class Demo2 : public Base {
public:
Demo2() {
this->instance_variable = 5;
}
int instance_variable;
};
int main(int argc, char **argv)
{
Demo1 a;
Demo2 b;
std::cout << "a.instance_variable: " << a.instance_variable << std::endl;
std::cout << "b.instance_variable: " << b.instance_variable << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在正在阅读的一本书中看到了第一个符号,我不确定这两个是否相同,或者Demo1是否有我应该注意的细微差别.
我发现第二个更具可读性,因为我来自Java/JavaScript背景,所以我很好奇我是否可以用"Demo2"替换"Demo1"而不改变代码的含义.
另外,什么是表达式"constructor:field(x){}"?