类构造函数初始化列表能不能对指针变量初始化
时间: 2023-05-23 19:06:44 浏览: 62
A:是的,可以使用构造函数初始化列表对指针变量进行初始化。例如:
```
class MyClass {
private:
int* ptr;
public:
MyClass(int* p) : ptr(p) {}
};
```
在上面的代码中,构造函数初始化列表初始化了私有成员变量 `ptr`,并将指针变量 `p` 赋值给了它。这样,我们就可以使用指针来访问在其他地方分配的内存。
相关问题
C++构造函数初始化列表为什么加花括号
C++构造函数初始化列表中加花括号不是必须的,但是建议加上,因为可以避免一些潜在的问题。
当我们在构造函数中初始化成员变量时,如果成员变量是一个类对象,那么它的构造函数也会被调用。这时,如果我们不使用花括号,而是使用等号或圆括号来初始化成员变量,可能会出现以下问题:
1. 对于常量成员,只能使用初始化列表来初始化。如果我们使用等号或圆括号来初始化,编译器会报错。
2. 如果成员变量的类型没有默认构造函数,那么我们必须在初始化列表中调用该类型的构造函数来初始化它。如果我们使用等号或圆括号来初始化,编译器会报错。
3. 如果成员变量是一个数组或指针,使用等号或圆括号来初始化可能会导致一些不可预测的问题。
因此,建议在构造函数的初始化列表中使用花括号来初始化成员变量,这样可以避免上述问题,并且更加清晰明了。
声明employee类在成员函数中用构造函数初始化成员
在C++中,可以在类的成员函数中使用构造函数来初始化类的成员变量。这通常是通过在成员函数中使用成员初始化列表来实现的。
例如,假设我们有一个名为Employee的类,其中包含两个成员变量:name和age。我们可以在类的构造函数中初始化这些成员变量,也可以在成员函数中使用构造函数来初始化它们。下面是使用成员函数初始化的示例:
```c++
class Employee {
public:
Employee() {}
void setInfo(const std::string& name, int age) {
// 使用构造函数初始化成员变量
this->name = std::string(name);
this->age = int(age);
}
private:
std::string name;
int age;
};
```
在上面的代码中,setInfo()成员函数使用构造函数来初始化name和age成员变量。注意,我们需要使用this指针来引用类的成员变量。