[C++ 总结记录] 构造函数初始化注意点
发布于: 2021 年 03 月 24 日
1.在构造函数中对属性一一赋值
class Cat{
public:
int age;
string name;
//对属性一一赋值
Cat(int age,string name){
this->name = name;
this->age = age;
}
}
复制代码
2.在构造函数采用初始化列表方式对属性进行赋值
a. 初始化列表方式初始化属性,函数体可以为空
class Cat {
private:
string name;
int age;
public:
Cat(string name,int age):name(name),age(age){}
void printInfo() {
cout << "name=" << this->name << endl;
cout << "age=" << this->age << endl;
}
};
int main() {
Cat c1("黑猫", 23);
c1.printInfo();
return 0;
}
复制代码
b. 初始化列表方式初始化部分属性,函数体可以不为空
class Cat {
private:
string name;
int age;
public:
Cat(string name,int age):name(name){ // 部分初始化列表
this->age = 100000; //采用普通的一一赋值
}
void printInfo() {
cout << "name=" << this->name << endl;
cout << "age=" << this->age << endl;
}
};
复制代码
C:成员变量的初始化顺序与初始化列表中列出的变量的顺序无关,它只与成员变量在类中声明的顺序有关。
#include <iostream>
using namespace std;
class Demo{
private:
int m_a;
int m_b;
public:
Demo(int b);
void show();
};
Demo::Demo(int b): m_b(b), m_a(m_b){ }
void Demo::show(){ cout<<m_a<<", "<<m_b<<endl; }
int main(){
Demo obj(100);
obj.show();
return 0;
}
复制代码
3. 如类中有 const 成员变量,属性的初始化必须用初始化列表进行初始化
class Cat {
private:
const string name;
const int age;
const int weight;
public:
Cat(string name, int a) :name(name), weight(a) ,age(a){ // 部分初始化列表
}
void printInfo() {
cout << "name=" << this->name << endl;
cout << "age=" << this->age << endl;
cout << "weight=" << this->weight << endl;
}
};
复制代码
划线
评论
复制
发布于: 2021 年 03 月 24 日阅读数: 8
图解AI
关注
技术成就未来 2021.03.22 加入
致力于:机器学习、深度学习、数据分析、算法、架构、C/C++、Rust、HTML5/webApp、Go、Python、Lua...
评论